[英]Create an instance of a custom generic class and a type stored in file as String
我正在尝试创建泛型类的实例,但是我的泛型类的T类型已经通过此链接http://msdn.microsoft.com/zh-cn/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,那我该怎么办!
提供的链接中的“ 构造泛型类型的实例”一节涵盖了这种确切的情况。
在您的情况下,您需要写
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>();
谢谢,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.