/// <summary> /// Creates a new <see cref="BehaviorChainConfiguration"/> from this /// template. /// </summary> // TODO: Comment. internal BehaviorChainConfiguration CreateConfiguration( IBehaviorFactoryConfiguration factoryConfiguration ) { Check.NotNull(factoryConfiguration, nameof(factoryConfiguration)); var config = new BehaviorChainConfiguration(); IBehaviorFactory factory = factoryConfiguration.GetFactory(_factoryProvider); foreach (BehaviorChainItemTemplate itemTemplate in _itemTemplates) { BehaviorKey key = itemTemplate.Key; if (itemTemplate.State == DefaultBehaviorState.DisabledWithoutFactory) { config.Append(key); } else { IBehavior instance = factory.Create(key); config.Append(key, instance); if (itemTemplate.State == DefaultBehaviorState.Enabled) { config.Enable(key); } } } return(config); }
internal static BehaviorChainConfiguration GetConfiguration( BehaviorChainTemplateKey templateKey, IBehaviorFactoryConfiguration factoryConfiguration ) { var template = BehaviorChainTemplateRegistry.GetTemplate(templateKey); return(template.CreateConfiguration(factoryConfiguration)); }
public IVMPropertyDescriptor <TValue> CustomProperty <TValue>( BehaviorChainTemplateKey templateKey, IBehaviorFactoryConfiguration factoryConfiguration, Action <BehaviorChainConfiguration> chainConfigurationAction ) { var config = BehaviorChainConfiguration.GetConfiguration(templateKey, factoryConfiguration); chainConfigurationAction(config); return(CustomProperty <TValue>(config)); }
private IVMPropertyDescriptor <TValue> CustomProperty <TValue>( BehaviorChainTemplateKey templateKey, IBehaviorFactoryConfiguration factoryConfiguration, Action <BehaviorChainConfiguration> chainConfigurationAction, Action <BehaviorChainConfiguration> userChainConfigurationAction ) { return(CustomProperty <TValue>( templateKey, factoryConfiguration, config => { chainConfigurationAction(config); if (userChainConfigurationAction != null) { userChainConfigurationAction(config); } } )); }