Я создал метод в С#, чтобы получить имя метода
public string GetCorrectPropertyName<T>(Expression<Func<T, string>> expression)
{
return ((MemberExpression)expression.Body).Member.Name; // Failure Point
}
и называя его
string lcl_name = false;
public string Name
{
get { return lcl_name ; }
set
{
lcl_name = value;
OnPropertyChanged(GetCorrectPropertyName<ThisClassName>(x => x.Name));
}
}
Это отлично работает, если свойство является строкой, и для всех остальных типов это исключение:
Невозможно передать объект типа "System.Linq.Expressions.UnaryExpression" для ввода "System.Linq.Expressions.MemberExpression".
- Я изменил строку на объект в сигнатуре метода, но потом снова сработал.
- Я изменил вызов с
x => x.PropertyName
наx => Convert.ToString(x.PropertyName)
, и он все еще не работает
Где я ошибаюсь?