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); })); }
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); }