隨着數據綁定對象來控制和網格我討厭屬性名稱怎麼會魔法字符串,所以我創建了一個非常簡單的方法如下:獲取子屬性名稱強類型
public static string GetPropertyName<PropertyType>(Expression<Func<T, PropertyType>> expressionForProperty)
{
MemberExpression expression = expressionForProperty.Body as MemberExpression;
return expression.Member.Name;
}
這讓我使用代碼,如:
Product.GetPropertyName(m => m.Name)
返回「名稱」。
這適用於基本對象。但是,如果我將方法調用更改爲:
Product.GetPropertyName(m => m.ProductCategory.Name)
這也返回「名稱」。但爲了讓數據綁定起作用,我需要它返回「ProductCategory.Name」。有沒有一種方法可以通過改變方法「GetPropertyName」來實現?
一個可能的解決方法是這樣:
string test = Product.GetPropertyName(p => p.ProductCategory) + "." + ProductCategory.GetPropertyName(pc => pc.Name)
然而,這不是一個巧妙的解決辦法。
的[獲取財產可能重複,作爲一個字符串,從一個表達式>](http://stackoverflow.com/questions/2789504/get-the-property-as-a-string-from-an-expressionfunctmodel-tproperty) –
nawfal