Exemple #1
0
        Configure(IContainer container, BindingLifecycle defaultLifecycle,  IDefaultConventions defaultConventions, IDefaultBindings defaultBindings, AssembliesConfiguration assembliesConfiguration)
        {
            SystemName = "[Not Set]";

            AssembliesConfiguration = assembliesConfiguration;

            container.DefaultLifecycle = defaultLifecycle;
            container.Bind<IConfigure>(this);

            Container = container;

            defaultBindings.Initialize(Container);
            defaultConventions.Initialize();
            
            InitializeProperties();
        }
Exemple #2
0
 /// <summary>
 /// Initializes a new instance of <see cref="DefaultBindings"/>
 /// </summary>
 public DefaultBindings(AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplentorsMap)
 {
     _assembliesConfiguration = assembliesConfiguration;
     _assemblyProvider = assemblyProvider;
     _contractToImplentorsMap = contractToImplentorsMap;
 }
Exemple #3
0
        public static Configure DiscoverAndConfigure(Action<AssembliesConfigurationBuilder> assembliesConfigurationBuilderCallback = null, IEnumerable<ICanProvideAssemblies> additionalAssemblyProviders = null)
#endif
        {
            IContractToImplementorsMap contractToImplementorsMap;
            var assembliesConfigurationBuilder = BuildAssembliesConfigurationIfCallbackDefined(assembliesConfigurationBuilderCallback);

            contractToImplementorsMap = new ContractToImplementorsMap();
#if (SILVERLIGHT)
            var assemblyProvider = new AssemblyProvider();
            var assembliesConfiguration = new AssembliesConfiguration(assembliesConfigurationBuilder.RuleBuilder);
#else


            var executingAssembly = Assembly.GetExecutingAssembly();
            contractToImplementorsMap.Feed(executingAssembly.GetTypes());
            var assemblySpecifiers = new AssemblySpecifiers(contractToImplementorsMap, new TypeFinder(), assembliesConfigurationBuilder.RuleBuilder);
            assemblySpecifiers.SpecifyUsingSpecifiersFrom(executingAssembly);

            var assemblyProviders = new List<ICanProvideAssemblies>
            {
                new AppDomainAssemblyProvider(),
                new FileSystemAssemblyProvider(new FileSystem())
            };

            if (additionalAssemblyProviders != null) assemblyProviders.AddRange(additionalAssemblyProviders);

            var assembliesConfiguration = new AssembliesConfiguration(assembliesConfigurationBuilder.RuleBuilder);
            var assemblyProvider = new AssemblyProvider(
                assemblyProviders,
                new AssemblyFilters(assembliesConfiguration), 
                new AssemblyUtility(),
                assemblySpecifiers,
                contractToImplementorsMap);
#endif
            var assemblies = assemblyProvider.GetAll(); 
            
            var canCreateContainerType = DiscoverCanCreateContainerType(assemblies);
            ThrowIfCanCreateContainerNotFound(canCreateContainerType);
            ThrowIfCanCreateContainerDoesNotHaveDefaultConstructor(canCreateContainerType);
            var canCreateContainerInstance = Activator.CreateInstance(canCreateContainerType) as ICanCreateContainer;
            var container = canCreateContainerInstance.CreateContainer();
            var configure = With(container, BindingLifecycle.Transient, assembliesConfiguration, assemblyProvider, contractToImplementorsMap);
            configure.EntryAssembly = canCreateContainerType.Assembly;
            configure.Initialize();
            return configure;
        }
Exemple #4
0
        /// <summary>
        /// Configure with a specific <see cref="IContainer"/>, <see cref="IDefaultConventions"/> and <see cref="IDefaultBindings"/>
        /// </summary>
        /// <param name="container"><see cref="IContainer"/> to configure with</param>
        /// <param name="defaultObjectLifecycle">Default <see cref="BindingLifecycle"/> for object creation/management</param>
        /// <param name="defaultConventions"><see cref="IDefaultConventions"/> to use</param>
        /// <param name="defaultBindings"><see cref="IDefaultBindings"/> to use</param>
        /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use</param>
        /// <returns></returns>
        public static Configure With(IContainer container, BindingLifecycle defaultObjectLifecycle, IDefaultConventions defaultConventions, IDefaultBindings defaultBindings, AssembliesConfiguration assembliesConfiguration)
        {
            if (Instance == null)
            {
                lock (InstanceLock)
                {
                    Instance = new Configure(container, defaultObjectLifecycle, defaultConventions, defaultBindings, assembliesConfiguration);
                }
            }

            return Instance;
        }
Exemple #5
0
 /// <summary>
 /// Configure with a specific <see cref="IContainer"/>, <see cref="IDefaultConventions"/> and <see cref="IDefaultBindings"/>
 /// </summary>
 /// <param name="container"><see cref="IContainer"/> to configure with</param>
 /// <param name="defaultConventions"><see cref="IDefaultConventions"/> to use</param>
 /// <param name="defaultBindings"><see cref="IDefaultBindings"/> to use</param>
 /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use</param>
 /// <returns></returns>
 public static Configure With(IContainer container, IDefaultConventions defaultConventions, IDefaultBindings defaultBindings, AssembliesConfiguration assembliesConfiguration)
 {
     return With(container, BindingLifecycle.Transient, defaultConventions, defaultBindings, assembliesConfiguration);
 }
Exemple #6
0
 /// <summary>
 /// Configure with a specific <see cref="IContainer"/>
 /// </summary>
 /// <param name="container"><see cref="IContainer"/> to configure with</param>
 /// <param name="defaultObjectLifecycle">Default <see cref="BindingLifecycle"/> for object creation/management</param>
 /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use</param>
 /// <param name="assemblyProvider"><see cref="IAssemblyProvider"/> to use for providing assemblies</param>
 /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param>
 /// <returns>Configuration object to continue configuration on</returns>
 public static Configure With(IContainer container, BindingLifecycle defaultObjectLifecycle, AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplementorsMap)
 {
     return With(container, defaultObjectLifecycle, new DefaultConventions(container), new DefaultBindings(assembliesConfiguration, assemblyProvider, contractToImplementorsMap), assembliesConfiguration);
 }
Exemple #7
0
 /// <summary>
 /// Configure with a specific <see cref="IContainer"/> and the <see cref="BindingLifecycle">Lifecycle</see> of objects set to none
 /// </summary>
 /// <param name="container"><see cref="IContainer"/> to configure with</param>
 /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use</param>
 /// <param name="assemblyProvider"><see cref="IAssemblyProvider"/> to use for providing assemblies</param>
 /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param>
 /// <returns>Configuration object to continue configuration on</returns>
 public static Configure With(IContainer container, AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplementorsMap)
 {
     return With(container, BindingLifecycle.Transient, assembliesConfiguration, assemblyProvider, contractToImplementorsMap);
 }
Exemple #8
0
 /// <summary>
 /// Initializes an instance of <see cref="AssemblyFilters"/>
 /// </summary>
 /// <param name="assembliesConfiguration"></param>
 public AssemblyFilters(AssembliesConfiguration assembliesConfiguration)
 {
     _assembliesConfiguration = assembliesConfiguration;
 }