创建自定义泛型类的实例以及存储在文件中的类型为String

时间:2014-03-15 21:27:52

标签: c# reflection activator

我正在尝试创建泛型类的实例,但是我的类通用类的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 那我该怎么做!

2 个答案:

答案 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>();

谢谢,