0

我想将字符串转换为类型。是否使用此代码:

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”的无效转换。

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

4

2 回答 2

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
}
于 2012-09-27T14:05:34.260 回答
-1

使用可以改用这个 -

Assembly.GetType(string).

MSDN 链接

于 2012-09-27T14:07:18.083 回答