2011-08-10 5 views
0

C#でリフレクションを使用してクラスのメンバーからオブジェクト値を取得するにはどうすればよいですか?C#でリフレクションを使用してクラスのメンバーからオブジェクト値を取得するにはどうすればよいですか?

は私が持っている:

public class Class1 { 
    public int field1; 
    public String field2; 
} 

public class Class2 { 
    public ind code; 
    public Class1 classRef; 
} 

は、私が "classRef" 値のメンバーのリストを取得します。

+0

だと思う - classRef' 'の値が与えられ、' Class2'、または 'Class1'のすべてのフィールドの値のインスタンスを与えられましたそのクラスのインスタンス。 –

+0

なぜあなたは反射を使用したいですか?どのような問題を解決しようとしていますか?メンバーが公開されている場合。それらにアクセスするだけです。 – vcsjones

答えて

1

私はあなたが望むものは明らかではありません、これは近い

var c2 = new Class2 
       { 
        code = 3; 
        Class1 = new Class1 
        { 
         field1 = 7; 
         field2 = "class 1" 
        } 
       }; 

var fields = c2.GetType().GetFields(); 
var field = fields.Where(fi=>fi.Name == "classRef").FirstOrDefault(); 
Assert.True(field != null); 
var value = field.GetValue(c2) as Class1; 

Assert.True(value != null); 
Assert.True(value.field1 == 7); 
Assert.True(value.field2 == "class 1"); 
+0

はいサー!ありがとうございます !! :) –

+0

答えとしてマークするのは気軽に – Jason

関連する問題