С Databinding объектов к элементам управления и сетках я ненавистных как имена свойств были бы волшебные строки, так что я создал очень простой метод следующим образом:Попадая имена к югу собственности сильно типизированных
public static string GetPropertyName<PropertyType>(Expression<Func<T, PropertyType>> expressionForProperty)
{
MemberExpression expression = expressionForProperty.Body as MemberExpression;
return expression.Member.Name;
}
Это позволяет мне использовать такой код as:
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