我有一個共同的問題,即我試圖以特定的方式繞過。使用表達式,靜態方法和基礎對象獲取類的屬性名稱
基本上用Winforms,我試圖在表單中設置控件的「DisplayMember」和「ValueMember」。你通常會設置它像這樣:
this.testCombobox.DisplayMember = "PropertyOne";
this.testCombobox.ValueMember = "PropertyTwo";
我想改寫這個如下:
this.testCombobox.DisplayMember = ClassOne.GetPropertyName(c => c.PropertyOne);
this.testCombobox.ValueMember = ClassOne.GetPropertyName(c => c.PropertyTwo);
(注:2個的方法調用必須是靜態的,保存在這裏創建對象)
所有我的班,我試圖做到這一點,從基類「BaseObject」繼承,所以我增加如下的方法給它:
public static string GetPropertyName<T, P>(Expression<Func<T, P>> action) where T : class
{
MemberExpression expression = action.Body as MemberExpression;
return expression.Member.Name;
}
然而,爲了利用這一點,我需要編寫下面的代碼來代替:
this.testCombobox.DisplayMember = BaseObject.GetPropertyName((ClassOne c) => c.PropertyOne);
我的問題是,我將如何改寫方法BaseObject.GetPropertyName
達到我想要什麼?我覺得我非常接近,但不知道如何改變它。
完美,就是這樣。謝謝馬丁! – eyeballpaul