0
如果在運行時將所需屬性的名稱作爲字符串提供,C#中的對象是否可以返回其屬性之一的值?如何使用屬性名稱作爲字符串獲取屬性值,如object [「foo」]
myObject["price"]
比方說,我們有這樣的對象:
public class Widget
{
public Widget(){}
public DateTime productionDate {get;set;}
public decimal price {get;set;}
}
這SqlCommand的參數定義:
SqlCommand c = new SqlCommand();
c.Parameters.Add(new SqlParameter("@price", SqlDbType.SmallMoney,0,"price"));
其他地方在不同範圍內的代碼,在用戶點擊了一個[Save Record]
按鈕,現在我們需要將小部件對象中的值綁定到更新命令的參數。我們在變量command
到SqlCommand的一個參考:
foreach (SqlParameter p in command.Parameters)
{
// assume `parameter.SourceColumn` matches the widget attribute name
string attributeName = p.SourceColumn;
p.Value = widget[attributeName] // ??
}
我認爲你的意思是「屬性」,而不是在c#中有它自己的含義的屬性。是的,您可以使用反射按名稱獲取屬性值。 – Crowcoder
要訪問屬性_exactly_就像你指的那樣,你需要某種類型的'Dictionary',它可以讓你通過key訪問器獲得一個值'public TValue this [TKey key] {get;組; }' –