2012-01-26 6 views
-1

初期化されていない変数がある変数がメインにあります。私はリフレクションで初期化されていない可変型の型を取り出す必要があります。なぜなら私は値を動的に生成していますが、主変数の型の型を取得できないからです。初期化されていない変数のタイプを取得する

画像でクイックウォッチは、タイプ名がameliyatGirisBilgileriで、初期化されていない場合でも変数を示しています。

as shown in Type field of QuickWatch

+1

その画像は読めないので、その説明もあまり理解しにくいものではありません。あなたは何をしようとしているかを示す短いしかし完全なプログラムを与えることができますか? –

+0

あなたがいる間はおそらく 'ameliyatGirisBilgileri 'の名前を他のものに変更してください – Adrian

+0

もしそれがローカル変数ならば、リフレクションは役に立たないでしょう、クラスフィールドまたはプロパティを意味しますか? –

答えて

0
FieldInfo fieldInfo = typeof(MyClass).GetField("ameliyatGirisBilgileri", BindingFlags.Public | BindingFlags.Instance); 
Type fieldType = fieldInfo.FieldType; 

申し訳ありませんが、クラスの名前を完全に入力するのは面倒です。

0

あなたはメインのタイプにGetField(...)またはGetFields(...)メソッドを使用してタイプ内の変数のFieldInfoを得ることができる必要があります。以下は、あなたがそれについて移動する方法を実証する短いプログラムです:

class Program 
{ 
    public string mStringType = null; 

    static void Main(string[] args) 
    { 
     var program = new Program(); 

     try 
     { 
      var field = program.GetType().GetField("mStringType"); 

      Console.WriteLine("Field '{0}' is of type '{1}' and has value '{2}'.", field.Name, field.FieldType.FullName, field.GetValue(program)); 

      program.mStringType = "Some Value"; 

      Console.WriteLine("Field '{0}' is of type '{1}' and has value '{2}'.", field.Name, field.FieldType.FullName, field.GetValue(program)); 
     } 
     catch (NullReferenceException) 
     { 
      Console.WriteLine("Error"); 
     } 

     Console.ReadKey(); 
    } 
} 

これは、コンソールウィンドウに次のような出力が得られます。

フィールド「mStringTypeは、」タイプ「可能System.String」であり、持っています値 ''。

フィールド 'mStringType'は 'System.String'タイプであり、値は 'Some Value'です。

注:フィールドはpublicされていない場合、あなたはGetField(...)またはGetFields(...)方法にいくつかのBindingFlagsを渡す必要があります。

関連する問題