应该何时继承System.Type

时间:2011-09-07 06:31:20

标签: .net reflection system.type

Type.GetTypeCode州的文档:

  

说明

     

Type继承时,可以更改此方法的行为   通过覆盖GetTypeCodeImpl方法。

文档未描述何时从System.Type继承。它是否适用于任何实际应用程序,还是仅适用于CLI的实施者?

System.Type文档也不包含此信息,它只包含必须为派生类重写哪些成员的列表。

由于无法覆盖typeof,我假设typeof运算符仍然从mscorlib程序集中返回内部System.RuntimeType类的实例,或类似的。用户派生类有什么用处?

2 个答案:

答案 0 :(得分:4)

基本上,您不应该从System.Type派生自己的类型。除非您是CLR团队的成员,否则我无法看到其用途。如果你正在实现一个模拟框架或类似的东西,那么可能有理由这样做 - 但我很怀疑。我对从Type得到的任何东西都非常怀疑 - 如果你不小心的话,我会发现它很容易出错。

我怀疑文档 应该说的是“从System.Type派生的类通过覆盖GetTypeCodeImpl来改变此方法的行为” - 尽管坦率地说甚至是用户并不需要知道。

答案 1 :(得分:0)

在我的例子中,我想创建我将在运行时动态创建的实例和类(来自数据源ex:XML)。我成功地将System.Type子类化,但它没用:你不能使用Activator.CreateInstance(yourSubType)创建实例。

我通过将源代码(XML)转换为可编译的c#代码然后使用CSharpCodeProvider编译来解决了这个问题。