我正在查看 Type 的元数据,并注意到一个成员受到保护,这让我想知道可以从中派生什么,这让我意识到我可以编写一个从它派生的类,所有这些让我想知道是什么我可以做到这一点(如果有的话)。
以下没有编译器错误:
class MyType : Type
{
// Implemented abstract members here.
}
最佳答案
好问题。我只有部分答案。目前有 4 个类派生自 Type。您可以在 MSDN 上找到类型层次结构.
System.Object
System.Reflection.MemberInfo
System.Type
System.Reflection.Emit.EnumBuilder
System.Reflection.Emit.GenericTypeParameterBuilder
System.Reflection.Emit.TypeBuilder
System.Reflection.TypeDelegator
看起来这些类型基本上是用来封装一些“实例构建”逻辑的。但是我还没有探索代码。
编辑
哦,哇...这很有趣。代码示例似乎不仅创建了类型的实例,而且还创建了类。因此,其中一些类正在创建 CLR 类型,并将它们保存到真正的程序集中。这很酷。
再次编辑
有大狗说的不止我上面列举的四种。我使用 Reflector ReSharper 查找派生类型并找到了这些(可能仍然缺少类型):
System.Type
System.RuntimeType
System.ReflectionOnlyType
System.Reflection.Emit.EnumBuilder
System.Reflection.Emit.GenericTypeParameterBuilder
System.Reflection.Emit.SymbolType
System.Reflection.Emit.TypeBuilder
System.Reflection.Emit.TypeBuilderInstantiation
System.Reflection.TypeDelegator
再次编辑
正如@MarcGravell 所说,您真的没有理由想要从其中任何一个派生一个类。但是,您可以在您自己的类中使用它们来封装您自己的逻辑。
关于c# - 为什么类 Type 不是密封的,我能用它做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367188/