对于控件和网格的数据绑定对象,我讨厌属性名称是魔术字符串,所以我创建了一个非常简单的方法,如下所示:
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)
但是,这不是一个简洁的解决方案。