如何将字符串转换为Type

时间:2012-09-27 13:47:29

标签: c# string generics types casting

我想将一个字符串转换为Type。是使用此代码:

private static T CastToT<T>(string value)
{
    return (T) Convert.ChangeType(value, typeof (T));
}

Type nr5 = CastToT<Type>(typeof(Class1).ToString());

但是我得到了一个InvalidCastException。

  

从'System.String'到'System.Type'的无效转换。

为什么我不能将字符串转换为Type?

2 个答案:

答案 0 :(得分:3)

因此,如果您想根据名称检索类型,您只需使用此方法:

Type.GetType(typeName);

typeName是要检索的类型的全名。如果您要查找的类型位于当前程序集或mscorlib.dll中,则此方法将起作用。

例如,根据您的示例:

private static Type CastToType(string value)
{
    return Type.GetType(value);
}

然后通过提供类型的FullName来调用该方法:

Type nr5 = CastToType(typeof(Random).FullName);
// nr5 will be null if no corresponding type is found.

if (nr5 != null && nr5.FullName == typeof(Random).FullName)
{
    // success
}

答案 1 :(得分:-1)

使用可以改为使用 -

Assembly.GetType(string).

MSDN Link