/// <summary> /// Initializes a new instance of <see cref="BootStageBuilder"/> /// </summary> /// <param name="container"><see cref="IContainer"/> to use for the stage building - optional, can be null</param> /// <param name="initialAssociations"><see cref="IDictionary{TKey, TValue}"/> with initial associations</param> public BootStageBuilder(IContainer container = null, IDictionary <string, object> initialAssociations = null) { _container = container; if (initialAssociations != null) { _initialAssociations = new Dictionary <string, object>(initialAssociations); } else { _initialAssociations = new Dictionary <string, object>(); } Bindings = new BindingProviderBuilder(); }
static IBindingCollection DiscoverBindingProvidersAndGetBindings( IContainer bootContainer, ITypeFinder typeFinder, IScheduler scheduler) { var bindingProviders = typeFinder.FindMultiple <ICanProvideBindings>(); var bindingCollections = new ConcurrentBag <IBindingCollection>(); scheduler.PerformForEach(bindingProviders, bindingProviderType => { var bindingProvider = bootContainer.Get(bindingProviderType) as ICanProvideBindings; var bindingProviderBuilder = new BindingProviderBuilder(); bindingProvider.Provide(bindingProviderBuilder); bindingCollections.Add(bindingProviderBuilder.Build()); }); var bindingCollection = new BindingCollection(bindingCollections.ToArray()); return(bindingCollection); }