メソッド名を取得するためにC#でメソッドを作成しました
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)
、それでも失敗します
私はどこが間違っていますか?