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(); }
/// <summary> /// Initializes a new instance of <see cref="DefaultBindings"/> /// </summary> public DefaultBindings(AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplentorsMap) { _assembliesConfiguration = assembliesConfiguration; _assemblyProvider = assemblyProvider; _contractToImplentorsMap = contractToImplentorsMap; }
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; }
/// <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; }
/// <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); }
/// <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); }
/// <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); }
/// <summary> /// Initializes an instance of <see cref="AssemblyFilters"/> /// </summary> /// <param name="assembliesConfiguration"></param> public AssemblyFilters(AssembliesConfiguration assembliesConfiguration) { _assembliesConfiguration = assembliesConfiguration; }