我正在尝试创建泛型类的实例,但是我的类通用类的T,我已经通过了这个链接 http://msdn.microsoft.com/en-us/library/w3f99sx1(v=vs.110).aspx 但我找不到我想要的东西
我有这个代码
public class MyClass<T>
{
public T prop { get; set; }
}
我的类型存储在字符串中 类型
string typeString = "System.String";
现在我想以这种方式在myclass中使用这种类型
Type xt = new Type.GetType(typeString);
MyClass<xt> obj = new MyClass<xt>();
但那只是未识别的类型xt 那我该怎么做!
答案 0 :(得分:4)
提供的链接中的构建通用类型的实例部分涵盖了这种情况。
在您的情况下,您需要写
Type typeArgument = Type.GetType(typestring);
Type constructed = typeof(MyClass<>).MakeGenericType(typeArgument);
object instance = Activator.CreateInstance(constructed);
然而,这种技术的使用案例并不常见。您应尽可能尝试在编译时提供类型信息。也就是说,尽量不要依赖Reflection来创建对象。泛型方法对于这种情况特别有用。
答案 1 :(得分:0)
方法Type.GetType(someString)
在运行时获取类型,但必须在编译时评估泛型类。在&lt;&gt;之间您需要指定类型本身的符号,而不是对象类型的实例。这样的事情必须奏效:
MyClass<String> obj = new MyClass<String>();
谢谢,