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 に答える