【发布时间】:2012-04-25 13:45:49
【问题描述】:
有没有办法从类型参数创建一个泛型类。
我有这样的事情:
public class SomeClass
{
public Type TypeOfAnotherClass { get; set; }
}
public class OneMoreClass
{
}
public class GenericClass<T>
where T : class
{
public void DoNothing() {}
}
public class GenericClass
{
public static GenericClass<T> GetInstance<T>(T ignored)
where T : class
{
return new GenericClass<T>();
}
}
我想要的是从一个类型创建一个 GenericClass。例如:
var SC = new SomeClass();
SC.TypeOfAnotherClass = typeof(OneMoreClass);
var generic = GenericClass.GetInstance(SC.TypeOfAnotherClass);
Assert.AreEqual(typeof(GenericClass<OneMoreClass>), generic.GetType());
在这里我希望得到GenericClass<OneMoreClass> 的实例,但我得到GenericClass<Type>
我也尝试使用该类型的实例。例如:
var generic = GenericClass.GetInstance(Activator.CreateInstance(SC.TypeOfAnotherClass));
这次我收到GenericClass<object>
有没有办法完成这个任务?
【问题讨论】: