public BuilderContext(UnityContainer container, NamedTypeBuildKey key, object existing, params ResolverOverride[] resolverOverrides) { Container = container; OriginalBuildKey = BuildKey = key; Existing = existing; _ownsOverrides = true; _resolverOverrides = new CompositeResolverOverride(resolverOverrides); }
public Factory(IUnityContainer container) { if (container == null) { throw new ArgumentNullException(nameof(container)); } _resolverOverrides = new CompositeResolverOverride(); _container = container; }
/// <summary> /// Create a new <see cref="BuilderContext"/> using the explicitly provided /// values. /// </summary> /// <param name="chain">The <see cref="IStrategyChain"/> to use for this context.</param> /// <param name="lifetime">The <see cref="ILifetimeContainer"/> to use for this context.</param> /// <param name="persistentPolicies">The set of persistent policies to use for this context.</param> /// <param name="transientPolicies">The set of transient policies to use for this context. It is /// the caller's responsibility to ensure that the transient and persistent policies are properly /// combined.</param> /// <param name="buildKey">Build key for this context.</param> /// <param name="resolverOverrides">The resolver overrides.</param> protected BuilderContext(IStrategyChain chain, ILifetimeContainer lifetime, IPolicyList persistentPolicies, IPolicyList transientPolicies, NamedTypeBuildKey buildKey, CompositeResolverOverride resolverOverrides) { this.chain = chain; this.lifetime = lifetime; this.persistentPolicies = persistentPolicies; this.policies = transientPolicies; this.originalBuildKey = buildKey; this.BuildKey = buildKey; this.Existing = null; this.resolverOverrides = resolverOverrides; this.ownsOverrides = false; }
/// <summary> /// Create a new <see cref="BuilderContext"/> using the explicitly provided /// values. /// </summary> /// <param name="chain">The <see cref="IStrategyChain"/> to use for this context.</param> /// <param name="lifetime">The <see cref="ILifetimeContainer"/> to use for this context.</param> /// <param name="persistentPolicies">The set of persistent policies to use for this context.</param> /// <param name="transientPolicies">The set of transient policies to use for this context. It is /// the caller's responsibility to ensure that the transient and persistent policies are properly /// combined.</param> /// <param name="buildKey">Build key for this context.</param> /// <param name="existing">Existing object to build up.</param> public BuilderContext(IStrategyChain chain, ILifetimeContainer lifetime, IPolicyList persistentPolicies, IPolicyList transientPolicies, NamedTypeBuildKey buildKey, object existing) { this.chain = chain; this.lifetime = lifetime; this.persistentPolicies = persistentPolicies; this.policies = transientPolicies; this.originalBuildKey = buildKey; this.BuildKey = buildKey; this.Existing = existing; this.resolverOverrides = new CompositeResolverOverride(); this.ownsOverrides = true; }
/// <summary> /// Add a new set of resolver override objects to the current build operation. /// </summary> /// <param name="newOverrides"><see cref="ResolverOverride"/> objects to add.</param> public void AddResolverOverrides(IEnumerable <ResolverOverride> newOverrides) { if (!this.ownsOverrides) { var sharedOverrides = this.resolverOverrides; this.resolverOverrides = new CompositeResolverOverride(); this.resolverOverrides.AddRange(sharedOverrides); this.ownsOverrides = true; } resolverOverrides.AddRange(newOverrides); }
/// <summary> /// Create a new <see cref="BuilderContext"/> using the explicitly provided /// values. /// </summary> /// <param name="container"></param> /// <param name="chain">The <see cref="IStrategyChain"/> to use for this context.</param> /// <param name="lifetime">The <see cref="ILifetimeContainer"/> to use for this context.</param> /// <param name="persistentPolicies">The set of persistent policies to use for this context.</param> /// <param name="transientPolicies">The set of transient policies to use for this context. It is /// the caller's responsibility to ensure that the transient and persistent policies are properly /// combined.</param> /// <param name="buildKey">Build key for this context.</param> /// <param name="existing">Existing object to build up.</param> public BuilderContext(IUnityContainer container, IStrategyChain chain, ILifetimeContainer lifetime, IPolicyList persistentPolicies, IPolicyList transientPolicies, NamedTypeBuildKey buildKey, object existing) { Container = container ?? throw new ArgumentNullException(nameof(container)); _chain = chain; Lifetime = lifetime; PersistentPolicies = persistentPolicies; Policies = transientPolicies; OriginalBuildKey = buildKey; BuildKey = buildKey; Existing = existing; _resolverOverrides = new CompositeResolverOverride(); _ownsOverrides = true; }
public BuilderContext(IBuilderContext original, IStrategyChain chain, object existing) { _chain = chain; Container = original.Container; ParentContext = original; Lifetime = original.Lifetime; OriginalBuildKey = original.OriginalBuildKey; BuildKey = original.BuildKey; PersistentPolicies = original.PersistentPolicies; Policies = original.Policies; Existing = existing; _resolverOverrides = new CompositeResolverOverride(); _ownsOverrides = true; }
protected BuilderContext(IBuilderContext original, Type type, string name) { var parent = (BuilderContext)original; _chain = parent._chain; ParentContext = original; Container = original.Container; Lifetime = parent.Lifetime; Existing = null; _resolverOverrides = parent._resolverOverrides; _ownsOverrides = false; Policies = parent.Policies; PersistentPolicies = parent.PersistentPolicies; OriginalBuildKey = new NamedTypeBuildKey(type, name); BuildKey = OriginalBuildKey; }
public void TypeBasedOverrideCollectionInCompositeOverrideInjectionTest() { ParameterOverride overrideParam = new ParameterOverride("value", 222); PropertyOverride overrideProp = new PropertyOverride("PropertyToInject", "TestOverrideProp"); TypeBasedOverride typeOverrideConstructor = new TypeBasedOverride(typeof(TypeToInject3ForTypeOverride), overrideParam); TypeBasedOverride typeOverrideProp = new TypeBasedOverride(typeof(TypeToInject3ForTypeOverride), overrideProp); CompositeResolverOverride compositeOverride = new CompositeResolverOverride(); compositeOverride.Add(typeOverrideConstructor); compositeOverride.Add(typeOverrideProp); IUnityContainer container = new UnityContainer(); container.RegisterType <TypeToUndergoeTypeBasedInject1>().RegisterType <IForTypeToInject, TypeToInject3ForTypeOverride>(new InjectionConstructor(111), new InjectionProperty("PropertyToInject", "DefaultValue")); var result = container.Resolve <TypeToUndergoeTypeBasedInject1>(compositeOverride); TypeToInject3ForTypeOverride overriddenProperty = (TypeToInject3ForTypeOverride)result.IForTypeToInject; Assert.AreEqual <int>(222, overriddenProperty.Value); Assert.AreEqual <string>("TestOverrideProp", overriddenProperty.PropertyToInject); }
public BuilderContext(IUnityContainer container, ILifetimeContainer lifetime, IStrategyChain chain, IPolicyList persistentPolicies, IPolicyList policies, INamedType buildKey, object existing, params ResolverOverride[] resolverOverrides) { _chain = chain; Container = container; Lifetime = lifetime; Existing = existing; OriginalBuildKey = buildKey; BuildKey = OriginalBuildKey; Policies = policies; PersistentPolicies = persistentPolicies; _ownsOverrides = true; _resolverOverrides = new CompositeResolverOverride(); if (null != resolverOverrides && 0 != resolverOverrides.Length) { _resolverOverrides.AddRange(resolverOverrides); } }
/// <summary> /// Add a new set of resolver override objects to the current build operation. /// </summary> /// <param name="newOverrides"><see cref="ResolverOverride"/> objects to add.</param> public void AddResolverOverrides(IEnumerable<ResolverOverride> newOverrides) { if (!this.ownsOverrides) { var sharedOverrides = this.resolverOverrides; this.resolverOverrides = new CompositeResolverOverride(); this.resolverOverrides.AddRange(sharedOverrides); this.ownsOverrides = true; } resolverOverrides.AddRange(newOverrides); }
public void TypeBasedOverrideCollectionInCompositeOverrideInjectionTest() { ParameterOverride overrideParam = new ParameterOverride("value", 222); PropertyOverride overrideProp = new PropertyOverride("PropertyToInject", "TestOverrideProp"); TypeBasedOverride typeOverrideConstructor = new TypeBasedOverride(typeof(TypeToInject3ForTypeOverride), overrideParam); TypeBasedOverride typeOverrideProp = new TypeBasedOverride(typeof(TypeToInject3ForTypeOverride), overrideProp); CompositeResolverOverride compositeOverride = new CompositeResolverOverride(); compositeOverride.Add(typeOverrideConstructor); compositeOverride.Add(typeOverrideProp); IUnityContainer container = new UnityContainer(); container.RegisterType<TypeToUndergoeTypeBasedInject1>().RegisterType<IForTypeToInject, TypeToInject3ForTypeOverride>(new InjectionConstructor(111), new InjectionProperty("PropertyToInject", "DefaultValue")); var result = container.Resolve<TypeToUndergoeTypeBasedInject1>(compositeOverride); TypeToInject3ForTypeOverride overriddenProperty = (TypeToInject3ForTypeOverride)result.IForTypeToInject; Assert.AreEqual<int>(222, overriddenProperty.Value); Assert.AreEqual<string>("TestOverrideProp", overriddenProperty.PropertyToInject); }