/// <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();
 }
Пример #2
0
        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);
        }