Я использую этот код в библиотеке проекта с использованием платформы .NET 4.5 и он работает отличноGetMemberInfo не найден при использовании .NET 4.5.2
protected void OnPropertyChanged<TProperty>(Expression<Func<TProperty>> property)
{
if (this.IsInpcActive)
{
this.OnPropertyChanged(property.GetMemberInfo().Name);
}
}
скопировать-вставить этот код в проекте с помощью .NET Frameworkwith 4.5.2 и я получаю сообщение об ошибке:
'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?
Как я не хочу потерять слишком много времени, я нашел план B: метод расширения:
internal static class ExpressionExtensions
{
#region Methods
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;
}
#endregion Methods
}
Но я cusious: , где этот метод пошел?
Возможный дубликат [Где найти GetMemberInfo] (http://stackoverflow.com/questions/20955547/where-to-find-getmemberinfo) – NikolaiDante
@Nikolai no, вот где OP получил этот код. – CodeCaster
@CodeCaster на самом деле это дубликат - такого метода нет, поэтому нужно создать новый. Просто случилось, что OP включил ответ дубликата в вопросе –