【发布时间】:2013-07-28 17:17:36
【问题描述】:
我像这样创建通用类:
public class Sample<T> where T : class
{
public DoSomething();
}
然后我创建新类:
public class Sample2
{
Sample<Sample2> obj=new Sample<Sample2>();
}
为什么我不能使用下面的代码在Sample2 类中创建Sample 类的实例?
Sample<typeof<this>> obj=new Sample<typeof<this>>();
【问题讨论】:
-
主要是因为泛型是在编译时评估的。
typeof函数在运行时返回一个 Type 类。您可以改用 Activator.CreateInstance:msdn.microsoft.com/en-us/library/wccyzw83.aspx -
另外,我认为您不能在字段初始化程序中引用
this,因为此时尚未构造对象 -
因为:1.
typeof不是通用的。这是typeof(...)。 2.typeof采用类型文字(或参数),而不是引用。 3. 泛型和Types 不能混用(不是没有反射):要么使用强类型泛型,要么使用反射和Type/typeof。