私は多くのオブジェクトを持っており、それぞれのタイプに関する情報を文字列で持っています。
お気に入り:
string stringObjectType = "DateTime";
実行中は、オブジェクト自体がありません。
だから私はそれをテストすることはできませんtypeof (object)
次の方法でオブジェクトのタイプを実行中に取得するにはどうすればよいですか。
typeof (stringObjectType)
try
{
// Get the type of a specified class.
Type myType1 = Type.GetType("System.DateTime");
Console.WriteLine("The full name is {myType1.FullName}.");
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Type myType2 = Type.GetType("NoneSuch", true);
Console.WriteLine("The full name is {myType2.FullName}.");
}
catch(TypeLoadException e)
{
Console.WriteLine(e.Message);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
MSDNを参照してくださいType.GetType(string)
Type.GetType()
文字列名から型を取得するために使用できます。したがって、次のことができます。
Type DateType = Type.GetType("System.DateTime");
「DateTime」は型の名前ではないため、そのまま使用することはできません。これを行い、名前が間違っている (存在しない) 場合は、例外がスローされます。したがって、これには try/catch が必要です。
次のようにして、特定のオブジェクトの適切な型名を取得できます。
string TypeName = SomeObject.GetType().FullName;
あいまいな名前や不完全な名前を使用する必要がある場合は、リフレクションをいじって楽しい時間を過ごすことができます。不可能ではありませんが、確かに苦痛です。