哪里可以找到GetMemberInfo
问题描述:
我已经找到了这个无处不在,我已经下载DLL
为LINQ Data
并且也有在参考中添加System.Reflection
,但它仍然无法找到它。哪里可以找到GetMemberInfo
C#代码:
protected void NotifyOfPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
protected void NotifyOfPropertyChanged<TProperty>(Expression<Func<TProperty>> property)
{
NotifyOfPropertyChanged(property.GetMemberInfo().Name);
}
在此行中出现的错误:
NotifyOfPropertyChanged(property.GetMemberInfo().Name);
和错误读取:
'System.Linq.Expressions.Expression<System.Func<TProperty>>' does not contain a definition for 'GetMemberInfo' and no extension method 'GetMemberInfo' accepting a first argument of type 'System.Linq.Expressions.Expression<System.Func<TProperty>>' could be found (are you missing a using directive or an assembly reference?
答
public static MemberInfo GetMemberInfo(this Expression expression)
{
var lambda = (LambdaExpression)expression;
MemberExpression memberExpression;
if (lambda.Body is UnaryExpression)
{
var unaryExpression = (UnaryExpression)lambda.Body;
memberExpression = (MemberExpression)unaryExpression.Operand;
}
else
memberExpression = (MemberExpression)lambda.Body;
return memberExpression.Member;
}
@ScottChamberlain你怎么把任何东西那里不是'LambdaExpression'?我的意思是,这个方法怎么能用于其他任何东西? –
@HighCore这仍然不起作用。 – user3157821
@ user3157821 *“这不起作用”*确实含糊不清。你能澄清一下吗?你有例外吗?如果是这样,那是什么?它在我的框架中工作。 –