internal ServiceRegistration(Type implementationType, IContainerConfigurator containerConfigurator, IObjectBuilderSelector objectBuilderSelector, RegistrationContextData registrationContextData, bool isDecorator, bool shouldHandleDisposal) { this.containerConfigurator = containerConfigurator; this.objectBuilderSelector = objectBuilderSelector; this.ImplementationType = implementationType; this.metaInformation = MetaInformation.GetOrCreateMetaInfo(implementationType); this.Constructors = this.metaInformation.GetConstructors(); this.InjectionMethods = this.metaInformation.GetInjectionMethods(); this.InjectionMembers = this.metaInformation.SelectInjectionMembers(registrationContextData, containerConfigurator.ContainerConfiguration); this.SelectedConstructor = this.metaInformation.FindSelectedConstructor(registrationContextData); this.RegistrationNumber = ReserveRegistrationNumber(); this.RegistrationContext = registrationContextData; this.IsDecorator = isDecorator; this.ShouldHandleDisposal = shouldHandleDisposal; this.HasName = this.RegistrationContext.Name != null; this.HasScopeName = this.RegistrationContext.Lifetime is NamedScopeLifetime; this.HasCondition = this.RegistrationContext.TargetTypeCondition != null || this.RegistrationContext.ResolutionCondition != null || this.RegistrationContext.AttributeConditions != null && this.RegistrationContext.AttributeConditions.Any(); this.RegistrationId = this.RegistrationContext.Name ?? (containerConfigurator.ContainerConfiguration.SetUniqueRegistrationNames ? (object)this.RegistrationNumber : implementationType); this.objectBuilder = this.SelectObjectBuilder(); }
internal ServiceRegistrator(IContainerContext containerContext, IContainerExtensionManager containerExtensionManager, IObjectBuilderSelector objectBuilderSelector) { this.containerContext = containerContext; this.containerExtensionManager = containerExtensionManager; this.objectBuilderSelector = objectBuilderSelector; }
internal StashboxContainer(IStashboxContainer parentContainer, IContainerExtensionManager containerExtensionManager, IResolverSelector resolverSelector) { this.disposed = new AtomicBool(); this.ParentContainer = parentContainer; this.containerExtensionManager = containerExtensionManager; this.resolverSelector = resolverSelector; this.registrationRepository = new RegistrationRepository(); this.ContainerContext = new ContainerContext(this.registrationRepository, new DelegateRepository(), this, new ResolutionStrategy(this.resolverSelector), parentContainer.ContainerContext.ContainerConfigurator, parentContainer.ContainerContext.DecoratorRepository); this.activationContext = new Resolution.ActivationContext(this.ContainerContext, this.resolverSelector, this); this.containerExtensionManager.ReinitalizeExtensions(this.ContainerContext); this.expressionBuilder = new ExpressionBuilder(this.ContainerContext, this.containerExtensionManager); this.objectBuilderSelector = new ObjectBuilderSelector(this.ContainerContext, this.expressionBuilder); this.ServiceRegistrator = new ServiceRegistrator(this.ContainerContext, this.containerExtensionManager, this.objectBuilderSelector); }
/// <summary> /// Constructs a <see cref="StashboxContainer"/> /// </summary> public StashboxContainer(Action <IContainerConfigurator> config = null) { this.disposed = new AtomicBool(); this.containerExtensionManager = new BuildExtensionManager(); this.resolverSelector = new ResolverSelector(); var configurator = new ContainerConfigurator(); config?.Invoke(configurator); this.registrationRepository = new RegistrationRepository(); this.ContainerContext = new ContainerContext(this.registrationRepository, new DelegateRepository(), this, new ResolutionStrategy(this.resolverSelector), configurator, new DecoratorRepository()); this.activationContext = new Resolution.ActivationContext(this.ContainerContext, this.resolverSelector, this); this.expressionBuilder = new ExpressionBuilder(this.ContainerContext, this.containerExtensionManager); this.objectBuilderSelector = new ObjectBuilderSelector(this.ContainerContext, this.expressionBuilder); this.ServiceRegistrator = new ServiceRegistrator(this.ContainerContext, this.containerExtensionManager, this.objectBuilderSelector); this.RegisterResolvers(); }
internal StashboxContainer(IContainerExtensionManager containerExtensionManager, IResolverSelector resolverSelector, IContainerConfigurator containerConfigurator, IDecoratorRepository decoratorRepository, Action <IContainerConfigurator> config = null) { this.containerExtensionManager = containerExtensionManager; this.resolverSelector = resolverSelector; config?.Invoke(containerConfigurator); this.ContainerContext = new ContainerContext(this.registrationRepository, this, new ResolutionStrategy(this.resolverSelector), containerConfigurator, decoratorRepository); var expressionBuilder = new ExpressionBuilder(this.containerExtensionManager, new ConstructorSelector()); this.serviceRegistrator = new ServiceRegistrator(this.ContainerContext, this.containerExtensionManager); this.objectBuilderSelector = new ObjectBuilderSelector(expressionBuilder, this.serviceRegistrator); this.registrationBuilder = new RegistrationBuilder(this.ContainerContext, this.objectBuilderSelector); this.RootScope = new ResolutionScope(this.resolverSelector, expressionBuilder, this.ContainerContext); this.rootResolver = (IDependencyResolver)this.RootScope; }
public RegistrationBuilder(IContainerContext containerContext, IObjectBuilderSelector objectBuilderSelector) { this.containerContext = containerContext; this.objectBuilderSelector = objectBuilderSelector; }