/// <summary> /// Creates a Rules Engine. /// </summary> /// <param name="basedOn">Copies specific rules from base Engine</param> /// <param name="types">Copies rules for the specified types only.</param> public RulesEngine(RulesEngine basedOn, params Type[] types) { if (types == null) { throw new ArgumentNullException("types"); } if (basedOn == null) { throw new ArgumentNullException("basedOn"); } var registry = basedOn._registry.Clone(); _expressionCache = basedOn._expressionCache; foreach (var type in types) { var invokers = registry.GetInvokers(type); foreach (var invoker in invokers) { _registry.RegisterInvoker(invoker); } } }
void IRegisterInvoker.RegisterInvoker(IRuleInvoker ruleInvoker) { registry.RegisterInvoker(ruleInvoker); }