【问题标题】:Inherit from Type class of .Net继承自 .Net 的 Type 类
【发布时间】:2010-04-30 21:41:24
【问题描述】:

从 .Net 中继承 Type 类有什么意义吗?

即这样做有什么意义?

我之所以这么问是因为 MSDN 文档中的这段文字:

继承者注意事项当你从 Type 继承时,你必须重写 以下成员...列表 成员。

类型的 MSDN 文档:http://msdn.microsoft.com/en-us/library/system.type.aspx

好吧,这实际上是说任何人都可以从 Type 继承......但他们没有说你为什么要这样做。

谢谢!

【问题讨论】:

  • 为什么要这样做?有什么特别需要吗?
  • @Kangkan:写反射信息就好了,不用属性。这只是一个想法!我只是想知道可能性。谢谢!

标签: .net inheritance


【解决方案1】:

这一切都取决于你在做什么。

这是一个案例。也许我需要 Type 类的额外功能,以便在某些时候在我的应用程序中使用,比如日志记录。但是,我需要将它传递给一个只需要Type 的函数。我可以将继承的类传递给该函数,而无需调用 MyObject.GetType()

【讨论】:

    【解决方案2】:

    有时我希望 .Net 反射库中的其他一些类是从接口派生的,因为在为我的代码生成代码编写单元测试时,我必须对其中的许多类进行 skin=and=wrap。

    例如,如果有一个 MethodInfo 实现的 IMethodInfo 接口,那就太好了。然后我可以编写我的 FakeMethodInfo 对象以用于我的单元测试。

    Type 也有同样的想法:我想创建一个 FakeType 类,它与 Type 具有相同的接口,但不涉及 CLR,而是返回由我的单元测试代码提供的假数据。

    【讨论】:

    • 我认为如果我可以扩展为我自己的类型返回的类型会很好......向它添加信息,而不必使用属性。
    • ICustomTypeDescriptor 对于使用 System.Component.TypeDescriptor 进行反射的类来说非常方便。原则上,您可以使用该接口覆盖所有内容。 .NET 框架中与 Windows 窗体和其他组件技术相关的许多类都使用这种机制。我不知道挂钩 Object.GetType() 的机制。
    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    相关资源
    最近更新 更多