2009-05-26 30 views
1

可能重複訪問一個對象的屬性:
Property Name and need its value簡單嗎?通過使用一個變量在C#

嗨,

這應該很容易爲大多數人。 我想通過使用變量值訪問一個對象中的普通變量(比如說例子)。

例如:我有一個帶有變量名稱列表的數組,我想通過使用它們從對象獲取信息。顯然,這是錯誤的:

string[] variable_names = new string[] {"name", "surname"}; 
myObject.variable_names[0] = 1; 
myObject.variable_names[1] = 1; 

在其他語言(不是C#)我使用:

myObject[variable_names[0]] = 1; 

我知道的例子看起來愚蠢的,但它只是解釋它的方式。

感謝提前:)

+3

如果我理解正確,你想訪問一個屬性,其中屬性的名稱由一個字符串變量保存。如果是這樣,這可能包含你的答案:http://stackoverflow.com/questions/798567/property-name-and-need-its-value/ – 2009-05-26 10:27:46

回答

6

您將需要使用反射來執行此操作。假設你想訪問的是myObject的一個屬性:

var type = myVariable.GetType(); 
var property = type.GetProperty("name"); 
property.SetValue(myVariable, 1, new object[] {}); 
2

C#強烈類型,這意味着,編譯器檢查是否存在屬性。因此,按名稱動態訪問屬性並不那麼容易。你需要爲此使用反射。

與其解釋這是如何工作的(我確信其他人會這樣做),我建議使用接口或其他手段來提供強大的輸入,只要有可能。 C#不是腳本語言,不應該作爲一個使用。

相關問題