public IFieldReader <TItem> Get(Stem <TItem> stem)
        {
            var instanceMethod = _getInstanceReaderMethod.Invoke(stem);

            if (instanceMethod is Func <TMiddle, TValue> delegateMethod)
            {
                return(new ExpressionMiddleDelegateFieldReader <TItem, TMiddle, TValue>(_middleExpression, delegateMethod));
            }

            throw new StemAttributeSetupException("Field instance method was invalid.");
        }
        public IFieldReader <TItem> Get(Stem <TItem> stem)
        {
            var instanceMethod = _getInstanceLocatorMethod.Invoke(stem);

            if (instanceMethod is Func <Expression <Func <TItem, TValue> > > expressionMethod)
            {
                Expression <Func <TItem, TValue> > expression = expressionMethod.Invoke();
                return(new ExpressionFieldReader <TItem, TValue>(expression));
            }

            if (instanceMethod is Func <TItem, TValue> delegateMethod)
            {
                return(new DelegateFieldReader <TItem, TValue>(delegateMethod));
            }

            throw new StemAttributeSetupException("Field instance method was invalid.");
        }
Esempio n. 3
0
        public IFieldWriter <TItem> Get(Stem <TItem> stem)
        {
            var instanceMethod = (Action <TItem, TValue>)_getInstanceLocatorMethod.Invoke(stem);

            return(new ActionFieldWriter <TItem, TValue>(instanceMethod));
        }