【问题标题】:Overwrite built in .NET class覆盖内置的 .NET 类
【发布时间】:2013-04-05 22:20:25
【问题描述】:

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

即。我想对控件的工作方式进行一些基本更改,并且我希望将这些更改反映在所有控件中,而不必对每个控件类型进行子类化。

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

【问题讨论】:

  • 您所描述的类似于AOP,使用某种方法拦截。
  • @RobertHarvey:那不是 AOP;这只是一些严重的病态和有缺陷的shizzle。

标签: c# .net inheritance


【解决方案1】:

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

【讨论】:

  • 所以我必须创建 NewForm、NewLabel 等,并将我的更改实施到每个单独的控件中?
  • @bizzehdee 由于 C# 不支持多重继承,是的,这是你唯一的选择,除非你可以用不同的方式封装你的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 2013-02-21
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多