2017-03-09 63 views
-1

我有以下對象如何動態讀取C#中的內部屬性值?

public class ResTemplate 
{ 
    public string country { get; set; } 
    public int jobCode { get; set; } 
    public Attributes attributes { get; set; } 
} 

public class Attributes 
{ 
    public string state { get; set; } 
    public string region { get; set; } 
} 

現在我想將其轉換爲數據表而不使用屬性名稱來讀取值

總產值有望

country jobcode state region 
US  001  IL  Chicago 
+1

_「沒有指定任何屬性」_ - 意思是什麼,究竟是什麼?你爲什麼不想指定「屬性」?你的意思只是類型,還是字段名稱?爲什麼你想使用反射呢?這是慢的,通常有更好的方法來實現你的目標,無論如何。請參閱[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。如果你問關於你更廣泛的目標的問題,你會得到更好的答案,而不是這個問題。 –

+0

事情是我想讓它更動態,而不是指定屬性名稱,如果它可以通過索引讀取 – SSK

+0

_「通過索引讀取」_ - 意思是什麼,到底是什麼?恐怕你沒有清楚地表達你的問題。您需要展示更多上下文並解釋爲什麼使用反射對您來說是一種可接受的折衷。你當然可以走對象樹來尋找給定名稱的任何屬性,但這是如何有用?你會如何使用它?請提供更多細節。 –

回答

0

爲什麼不試試

myObj.GetType().GetProperty("attributes ").GetType().GetProperty("state") 

然後只處理該值。

也可以使用

PropertyInfo[] properties = myObj.GetType().GetProperties(); 

然後運行一個for循環和使用訪問其他屬性和它們的值: roperties [I];

+0

我已經說過我不想在此處使用屬性名稱「屬性」。因爲我想讓它動態 – SSK

+0

我編輯了我的答案:) –

+0

我試過了,但它不起作用。屬性[0] .Name返回「容量」 – SSK

0

stateValue會給你想要的結果。

​​
+0

我已經說過我不想在這裏使用屬性名稱「屬性」。因爲我想讓它變成動態的 – SSK

+0

你能否解釋一下如何在不傳遞屬性名稱的情況下選擇值。恐怕你沒有完成這個問題。 –