Как работает привязка данных в AngularJS?

Чтобы обновить и / или улучшить ответ от @Hans Passant, я бы отделил поиск свойства в метод расширения. Это имеет дополнительное преимущество для удаления неприятной магической строки в методе GetProperty ()

public static class PropertyHelper<T>
{
    public static PropertyInfo GetProperty<TValue>(
        Expression<Func<T, TValue>> selector)
    {
        Expression body = selector;
        if (body is LambdaExpression)
        {
            body = ((LambdaExpression)body).Body;
        }
        switch (body.NodeType)
        {
            case ExpressionType.MemberAccess:
                return (PropertyInfo)((MemberExpression)body).Member;
            default:
                throw new InvalidOperationException();
        }
    }
}

Затем ваш тест сводится к двум строкам

var property = PropertyHelper<MyClass>.GetProperty(x => x.MyProperty);
Attribute.IsDefined(property, typeof(MyPropertyAttribute));
1895
задан Community 23 May 2017 в 12:34
поделиться