我在 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)
,但仍然失败
我哪里错了?