我正在查看Type的元数据,并注意到一个成员是受保护的,这让我想知道可能会从它派生什么,这让我意识到我可以编写一个从它派生的类,所有这些都让我想知道我能用它做什么(如果有的话)。
以下代码中没有编译器错误:
class MyType : Type
{
// Implemented abstract members here.
}
发布于 2012-02-21 03:32:28
是的,不要继承;p有像RuntimeType
这样的东西-- Type
是你通常应该使用的抽象。如果你想在运行时动态地表示一个类型,有两个主要的选择;
4.0中的
dynamic
(通过实现IDynamicMetaObjectProvider
)TypeDescriptor
(通过实现ICustomTypeDescriptor
或提供TypeDescriptionProvider
,可能还包括TypeConverter
)如果您想进行元编程(在运行时创建实际的新类型,而不是欺骗它),也可以使用TypeBuilder
发布于 2012-02-21 03:34:01
Type
之所以被解封,是因为它实际上被设计为由运行时继承。在BCL中有很多这样的例子。
其中最有趣的是RuntimeType
,这是一个正在运行的系统中的大多数Type
实例是如何实现的。大多数对o.GetType()
的调用实际上都会返回一个RuntimeType
实例。
https://stackoverflow.com/questions/9367188
复制相似问题