日期:2014-05-17  浏览次数:21042 次

如何创建T为this.GetType的泛型集合
比如如下代码,应该怎么创建这个list才对呢

class a(){
    public Create(){
        var  lst = new List<this.GetType()>();   //编译错误
    }
}

class b() : a{}

foo(){ 
    var f=new b();  b.Create();   
}

------解决方案--------------------
还是那句话,泛型本质上是设计时的概念,也就是说在编译的时候是明确类型的。
任何想在运行时使用泛型的设计都属于非正常设计。
------解决方案--------------------
public Create()
{
        Type generic = typeof(List<>);
        var list = Activator.CreateInstance(generic.MakeGenericType(this.GetType())) as IList;
}
用反射可以实现你这个需求,但就像LS说的,这种设计可能不是很好。