DependencyContainer(IReadableLocator innerLocator, IPolicyList innerPolicies, StagedStrategyChain <BuilderStage> innerStrategies, IDependencyContainerConfigurator configurator) { locator = new Locator(innerLocator); policies = new PolicyList(innerPolicies); strategies = new StagedStrategyChain <BuilderStage>(innerStrategies); RegisterSingletonInstance <IObjectFactory>(this); if (innerStrategies == null) { strategies.AddNew <BuildKeyMappingStrategy>(BuilderStage.PreCreation); strategies.AddNew <SingletonStrategy>(BuilderStage.PreCreation); strategies.AddNew <ConstructorReflectionStrategy>(BuilderStage.PreCreation); strategies.AddNew <MethodReflectionStrategy>(BuilderStage.PreCreation); strategies.AddNew <PropertyReflectionStrategy>(BuilderStage.PreCreation); strategies.AddNew <EventBrokerReflectionStrategy>(BuilderStage.PreCreation); strategies.AddNew <InterceptionReflectionStrategy>(BuilderStage.PreCreation); strategies.AddNew <InterfaceInterceptionStrategy>(BuilderStage.Creation); strategies.AddNew <VirtualInterceptionStrategy>(BuilderStage.Creation); strategies.AddNew <CreationStrategy>(BuilderStage.Creation); strategies.AddNew <PropertySetterStrategy>(BuilderStage.Initialization); strategies.AddNew <MethodCallStrategy>(BuilderStage.Initialization); strategies.AddNew <EventBrokerStrategy>(BuilderStage.Initialization); strategies.AddNew <BuilderAwareStrategy>(BuilderStage.PostInitialization); strategies.AddNew <RemotingInterceptionStrategy>(BuilderStage.PostInitialization); } if (innerPolicies == null) { policies.SetDefault <ICreationPolicy>(new DefaultCreationPolicy()); } locator.Add(typeof(EventBrokerService), new EventBrokerService()); if (configurator != null) { configurator.Configure(this); } }
public DependencyContainer(DependencyContainer innerContainer, IDependencyContainerConfigurator configurator) : this(innerContainer.locator, innerContainer.policies, innerContainer.strategies, configurator) { }
public DependencyContainer(IDependencyContainerConfigurator configurator) : this(null, null, null, configurator) { }