我试图创建一个泛型类的实例,但我的泛型类的T型,我已经通过这个链接http://msdn.microsoft.com/en-us/library/w3f99sx1 (v = vs.110) . aspx但是我找不到我要找的东西
我有这个代码
public class MyClass<T>
{
public T prop { get; set; }
}
类型存储在string中类型
string typeString = "System.String";
现在我想在myclass中这样使用这个类型
Type xt = new Type.GetType(typeString);
MyClass<xt> obj = new MyClass<xt>();
只是未知类型xt那我该怎么办呢!
所提供的链接中的构造泛型类型的实例一节涵盖了这种情况。
在你的情况下,你需要写
Type typeArgument = Type.GetType(typestring);
Type constructed = typeof(MyClass<>).MakeGenericType(typeArgument);
object instance = Activator.CreateInstance(constructed);
然而,这种技术的用例远不常见。您应该尽可能尝试在编译时提供类型信息。也就是说,尽量不要依赖反射来创建对象。对于这种情况,泛型方法特别有用。
方法Type.GetType(someString)
在运行时获得类型,但泛型类必须在编译时求值。在<>符号之间,您需要指定类型本身,而不是对象type的实例。像这样的东西必须工作:
MyClass<String> obj = new MyClass<String>();
谢谢,