随着数据绑定对象来控制和网格我讨厌属性名称怎么会魔法字符串,所以我创建了一个非常简单的方法如下:获取子属性名称强类型
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