コード例 #1
0
        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));
        }
コード例 #2
0
 public bool ApplyStrategy(IRuleCalculationMode ruleCalculationMode)
 {
     return(ruleCalculationMode != null &&
            ruleCalculationMode.CalculationType == RuleCalculationModeType.Consecutive);
 }