2013-10-16 166 views
1

下面的代碼(在計算器上找到)工作原理:反映自定義類型返回null

object ob = new { Name = "Erwin Okken", Age = 23, Position = new Point(2, 5) }; 
Type type = ob.GetType(); 
PropertyInfo pr = type.GetProperty("Name"); 
string value = pr.GetValue(ob, null).ToString(); // Erwin Okken 

但是,如果我用我自己的類,它不工作:

public class Subject 
{ 
    public string Name; 
    public int Age; 
    public Point Position; 

    public string Stringtest; 
    public int IntTest; 

    public Subject() 
    { 

    } 
} 

Type type = ob.GetType(); 
PropertyInfo pr = type.GetProperty("Name"); // null 
string value = pr.GetValue(ob, null).ToString(); 

我嘗試了所有的BindingFlags ,但變量「pr」保持爲空。任何人有想法?

+3

'名稱'是一個字段沒有財產,ch把它改成屬性'public string Name {get;組; }'或者使用'type.GetField'。 –

+0

'ob'是什麼意思? –

+0

@Alessandro這是正確的答案(很可能),所以應該給出答案。 – Dialecticus

回答

2

你有這樣的:

​​

在你的類型定義Name是場不是一個屬性,你有你的類型改成這樣:

public class Subject 
{ 
    public string Name { get; set; } 
    ... 
} 

Altenatively如果你想十個分量Name作爲領域(壞主意),你可以使用:

FieldInfo pr = type.GetField("Name");