2011-08-10 42 views
0

如何在C#中使用反射從類的成員獲取對象值?如何在C#中使用反射從類的成員獲取對象值?

我:

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

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

我希望得到會員的名單 「classRef」 值。

+0

目前尚不清楚你想要什麼 - 給Class2'的'實例的'classRef'值,或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

相關問題