Type.GetTypeCode州的文档:
说明
从Type继承时,可以更改此方法的行为 通过覆盖GetTypeCodeImpl方法。
文档未描述何时从System.Type继承。它是否适用于任何实际应用程序,还是仅适用于CLI的实施者?
System.Type文档也不包含此信息,它只包含必须为派生类重写哪些成员的列表。
由于无法覆盖typeof
,我假设typeof
运算符仍然从mscorlib程序集中返回内部System.RuntimeType类的实例,或类似的。用户派生类有什么用处?
答案 0 :(得分:4)
基本上,您不应该从System.Type
派生自己的类型。除非您是CLR团队的成员,否则我无法曾看到其用途。如果你正在实现一个模拟框架或类似的东西,那么可能有理由这样做 - 但我很怀疑。我对从Type
得到的任何东西都非常怀疑 - 如果你不小心的话,我会发现它很容易出错。
我怀疑文档 应该说的是“从System.Type
派生的类通过覆盖GetTypeCodeImpl
来改变此方法的行为” - 尽管坦率地说甚至是用户并不需要知道。
答案 1 :(得分:0)
在我的例子中,我想创建我将在运行时动态创建的实例和类(来自数据源ex:XML)。我成功地将System.Type子类化,但它没用:你不能使用Activator.CreateInstance(yourSubType)创建实例。
我通过将源代码(XML)转换为可编译的c#代码然后使用CSharpCodeProvider编译来解决了这个问题。