Example #1
0
 public BuilderContext(UnityContainer container, NamedTypeBuildKey key, object existing, params ResolverOverride[] resolverOverrides)
 {
     Container          = container;
     OriginalBuildKey   = BuildKey = key;
     Existing           = existing;
     _ownsOverrides     = true;
     _resolverOverrides = new CompositeResolverOverride(resolverOverrides);
 }
Example #2
0
        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);
        }
Example #6
0
 /// <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;
 }
Example #7
0
 /// <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;
 }
Example #8
0
 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;
 }
Example #9
0
        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;
        }
Example #10
0
        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);
        }
Example #11
0
        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);
            }
        }
Example #12
0
        /// <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);
        }
Example #13
0
 /// <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;
 }
Example #14
0
        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);
        }