【发布时间】:2013-07-26 13:43:12
【问题描述】:
对于控件和网格的数据绑定对象,我讨厌属性名称是魔术字符串,所以我创建了一个非常简单的方法,如下所示:
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)
但是,这不是一个很好的解决方案。
【问题讨论】: