Вы, безусловно, можете создать метод многократного использования , который предоставит вам все, что вам нужно.
protected String GetPropertyName<TProperty>(Expression<Func<TProperty>> propertyExpresion)
{
var property = propertyExpresion.Body as MemberExpression;
if (property == null || !(property.Member is PropertyInfo) ||
!IsPropertyOfThis(property))
{
throw new ArgumentException(string.Format(
CultureInfo.CurrentCulture,
"Expression must be of the form 'this.PropertyName'. Invalid expression '{0}'.",
propertyExpresion), "propertyExpression");
}
return property.Member.Name;
}
Для использования вы передадите имя собственности ...
String propertyName = GetPropertyName(() => this.BalanceOwing);
Как уже упоминал Марк, это влияет на производительность (ничего, что мы формально не оценивали и не отмечали на текущий момент), однако это хорошо подходило нашей команде, когда мы использовали поведение INotifyPropertyChanged
и создавали строго типизированное присутствие в разных местах.наши модели / ViewModels.