void Compile <T, TProperty>(Expression <Func <T, TProperty> > propertyExpression, Func <NodeSelectorFactory, NodeSelectorFactory> selectorConfigurator) where T : class { var conditionFactory = new ConditionAlphaNodeSelectorFactory(_configurator, node => _alphaNodes.Add(node)); var alphaFactory = new AlphaNodeSelectorFactory(conditionFactory, _configurator); NodeSelectorFactory factory = selectorConfigurator(alphaFactory); Compile(propertyExpression, factory); }
void AddCompareCondition <T, TProperty>(Expression <Func <T, TProperty> > propertyExpression, CompareNode <T, TProperty> compareNode) where T : class { var conditionFactory = new ConditionAlphaNodeSelectorFactory(_configurator, node => _alphaNodes.Add(node)); var alphaFactory = new AlphaNodeSelectorFactory(conditionFactory, _configurator); var compareFactory = new CompareNodeSelectorFactory <TProperty>(alphaFactory, _configurator, compareNode.Comparator, compareNode.Value); Compile(propertyExpression, compareFactory); }