Пример #1
0
        public object ResolvePropertyCustom(object key, PropertyInfo propertyInfo, object context)
        {
            var first = RuleMaps.First();

            return(RuleMaps.Skip(1).Aggregate(first.ResolvePropertyCustom(key, propertyInfo, context), (result, ruleMap) => {
                var expression = ruleMap.ResolvePropertyCustom(key, propertyInfo, context);
                if (result == null && expression == null)
                {
                    return null;
                }
                if (result == null)
                {
                    return expression;
                }
                if (expression == null)
                {
                    return result;
                }
                return GetInstanceCustomReducer(key)(result, expression);
            }));
        }
Пример #2
0
        public object ResolveTypeCustom(object key, object context)
        {
            var first = RuleMaps.First();
            var composedExpression = RuleMaps.Skip(1).Aggregate(first.ResolveTypeCustom(key, context), (result, ruleMap) => {
                var expression = ruleMap.ResolveTypeCustom(key, context);
                if (result == null && expression == null)
                {
                    return(null);
                }
                if (result == null)
                {
                    return(expression);
                }
                if (expression == null)
                {
                    return(result);
                }
                return(GetInstanceCustomReducer(key)(result, expression));
            });

            return(composedExpression);
        }