使用反射创建变量实例

时间:2010-01-06 10:56:52

标签: c# reflection

我想用反射创建一个t类型的实例,即


Type t = typeof(string);
string s = (t)Activator.CreateInstance(t); // this fails because of convertion
string s = Activator.CreateInstance(t) as t // also fails

有没有办法进行这样的转换? 感谢。

2 个答案:

答案 0 :(得分:4)

是。您必须转换为string,而不是t。您可能需要通用方法,或者:

public T GetInstance<T>()
{
    Type t = typeof(T);
    T s = (T)Activator.CreateIstance(t);
    return s;
}

根据情况,您正在尝试将实际上是System.String实例的对象转换为System.Type ...

答案 1 :(得分:1)

试试这个:

string s = (string)Activator.CreateInstance(t);

Activator.CreateInstance返回一个在对象中装箱的实例,因此必须先将其强制转换为正确的类型才能使用它。

在您的示例中,t是Type对象变量,而不是类型引用。您必须直接在我的示例中指定类型,或者您可以使用泛型。