Example #1
0
        public IRuleExecutor CreateDedicatedExecutor(IRulePresenter rule)
        {
            switch (rule.RuleType)
            {
            case RulePresenterType.Root:
                return(CreateGeneratorRuleExecutor((GeneratorRulePresenter)rule));

            case RulePresenterType.Entity:
                return(CreateEntityRuleExecutor((EntityRulePresenter)rule));

            case RulePresenterType.Attribute:
                return(CreateAttributeRuleExecutor((AttributeRulePresenter)rule));

            case RulePresenterType.Operation:
                return(CreateOperationRuleExecutor((OperationRulePresenter)rule));

            default:
                break;
            }

            throw new ArgumentException($"{rule.GetType().Name} rule not supported");
        }