C# 覆盖内置的.NET类

C# 覆盖内置的.NET类,c#,.net,inheritance,C#,.net,Inheritance,如果我从诸如System.Windows.Forms.Control之类的类继承并创建System.Windows.Forms.NewControl,是否有办法强制.NET将我的System.Windows.Forms.NewControl类用作System.Windows.Forms.Control,以便所有内置控件都使用我的System.Windows.Forms.NewControl 也就是说,我想对控件的工作方式进行一些基本更改,我希望这些更改能够反映在所有控件中,而不必对每个控件类型进

如果我从诸如System.Windows.Forms.Control之类的类继承并创建System.Windows.Forms.NewControl,是否有办法强制.NET将我的System.Windows.Forms.NewControl类用作System.Windows.Forms.Control,以便所有内置控件都使用我的System.Windows.Forms.NewControl

也就是说,我想对控件的工作方式进行一些基本更改,我希望这些更改能够反映在所有控件中,而不必对每个控件类型进行子类化


我知道扩展方法不适用于此,因为它们需要显式调用,我希望更改属性和方法。

不,您不能这样做。OO背后的思想是,编写遵循现有类的约定和行为的代码的人可以相信该类将继续按照其设计的方式运行,而不必担心用户的干扰。这不是像Ruby那样的动态语言。

不,你不能做这样的事情。OO背后的思想是,编写遵循现有类的约定和行为的代码的人可以相信该类将继续按照其设计的方式运行,而不必担心用户的干扰。这不是像Ruby那样的动态语言。

您所描述的类似于使用某种方法拦截。@RobertHarvey:这不是AOP;这只是一些严重的疾病和有缺陷的垃圾。你所描述的类似于,使用某种方法拦截。@RobertHarvey:那不是AOP;这只是一些严重的疾病和缺陷。所以我必须创建新表单、新标签等,并将我的更改落实到每个控件中?@bizzehdee As C#不支持多重继承,是的,这是您唯一的选择,除非你可以用不同的方式封装你的功能。那么我就必须创建NewForm、NewLabel等等,并将我的更改实现到每个控件中?@bizzehdee As C#不支持多重继承,是的,这是你唯一的选择,除非你可以用不同的方式封装你的功能。