private IEnumerable <IRuleOrchestrationStrategy> GetOrchestrationStrategies(IRuleCalculationMode ruleCalculationMode) { var interfaceType = typeof(IRuleOrchestrationStrategy); return(AppDomain.CurrentDomain.GetAssemblies() .SelectMany(x => x.GetTypes()) .Where(x => interfaceType.IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract) .Select(x => (IRuleOrchestrationStrategy)Activator.CreateInstance(x)) .Where(s => s.ApplyStrategy(ruleCalculationMode)) .OrderBy(x => x.OrchestrationOrder)); }
public bool ApplyStrategy(IRuleCalculationMode ruleCalculationMode) { return(ruleCalculationMode != null && ruleCalculationMode.CalculationType == RuleCalculationModeType.Consecutive); }