2013-02-27 10 views
16

私は多くのオブジェクトを持っていますが、それぞれの型について文字列内に情報があります。
のような:typeof:文字列から型を取得する方法

string stringObjectType = "DateTime"; 

実行している間、私はオブジェクト自体を持っていません。あなたはタイプを取得するためにType.GetType()を使用することができますType.GetType(string) on MSDN

+0

文字列は 'DateTime'または' System.DateTime'ですか? –

+0

これは必要なものですか? http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx – Youssef

+0

正確には、 'typeof(object)'を書くことはできません。クラス名だけを渡すことができます。代わりに 'object.GetType'を使用してください。ただ言って。 – RoadBump

答えて

16
try 
{ 
    // Get the type of a specified class. 
    Type myType1 = Type.GetType("System.DateTime"); 
    Console.WriteLine("The full name is {0}.", 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 {0}.", myType2.FullName); 
} 
catch(TypeLoadException e) 
{ 
    Console.WriteLine(e.Message); 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 


だから私はしてオブジェクトの種類を実行している間、私は取得できますかtypeof (object)

それをテストすることはできませんその文字列名から。したがって、あなたはできる:

Type DateType = Type.GetType("System.DateTime"); 

タイプの名前ではないので、単に "DateTime"を使用することはできません。これを行い、名前が間違っている(それが存在しない)場合、例外がスローされます。だから、これを試してみたり、キャッチしたりする必要があります。あなたが行うことによって、任意のオブジェクトのための適切なタイプ名を取得することができます

:あなたがあいまいなまたは不完全な名前を使用する必要がある場合

string TypeName = SomeObject.GetType().FullName; 

を、あなたは反射をいじり楽しい時間を持っているつもりです。不可能ではありませんが、確かに痛みです。

+0

ええ、なぜ、彼のコードが正しいです – animaonline

+2

このコードは間違いありません。彼の質問に答えますか?文字列stringObjectType = "DateTime";ここで正しいタイプを取得しません。 – Evelie

+0

私はそれが唯一の例だと信じています – animaonline

18

を参照してください

typeof (stringObjectType) 
関連する問題