コード例 #1
0
        public ITerminalNode <T> BuildTerminalNode <T>(BuilderContext context, IRuleFact <T> fact)
            where T : class
        {
//            if (context.AlphaSource != null)
//                BuildJoinNode(context);

            var factIndexMap = context.CreateIndexMap(fact);

//            var terminalNode = new TerminalNode<T>(context.BetaSource, factIndexMap);

//            return terminalNode;

            throw new NotImplementedException();
        }
コード例 #2
0
        public RuleCondition <T> GetRuleCondition <T>(IRuleFact <T> ruleFact, Expression <Func <T, bool> > conditionExpression)
            where T : class
        {
            if (conditionExpression == null)
            {
                throw new ArgumentNullException(nameof(conditionExpression));
            }

            if (conditionExpression.Parameters.Count != 1)
            {
                throw new ArgumentException($"Expected 1 parameter, found {conditionExpression.Parameters.Count}", nameof(conditionExpression));
            }

            var condition = new RuleCondition <T>(ruleFact, conditionExpression);

            return(condition);
        }
コード例 #3
0
 public IndexMap CreateIndexMap(IRuleFact fact)
 {
     return(IndexMap.CreateMap(_parameters, _parameters));
 }
コード例 #4
0
 public RuleCondition(IRuleFact <T> ruleFact, Expression <Func <T, bool> > conditionExpression)
 {
     _ruleFact            = ruleFact;
     _conditionExpression = conditionExpression;
 }