繁体   English   中英

创建一个自定义通用类的实例,并以String的形式存储在文件中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM