我有一個類有一個屬性,該屬性有一個attribute
,並在該屬性的get{}
或set{}
內,我想訪問該屬性。我可以在不使用名稱的情況下獲取屬性的PropertyInfo嗎?
有沒有辦法做到這一點,而不必引用財產的名稱作爲string
?這是否工作?
class MyClass
{
[DefaultValue("This is my default")]
public string MyProperty
{
get
{
string value = this.db.getMyProperty();
if (value == null)
{
var myPropertyInfo = this.GetType().GetProperty("MyProperty");
var myAttributeInfo = myPropertyInfo.GetCustomAttribute(
typeof (DefaultValueAttribute)) as DefaultValueAttribute;
if (myAttributeInfo != null)
value = myAttributeInfo.defaultValue;
}
return value;
}
}
}
是什麼原因導致我這個擔心是,經過屬性的名稱是違反乾的,並使它過於容易不小心傳遞了錯誤的字符串。
如何改進此代碼以消除重複?
這似乎更多的工作,而不僅僅是有一個默認參數設置的支持字段,沒有任何屬性或反射。 –
我簡化了這個問題。我們從需要顯示當前值的視圖模型中填充此值,以及在用戶選擇恢復爲默認值時將使用的值。 –