private static void AssertOrder(IStrategyChain chain,
                                        params FakeStrategy[] strategies)
        {
            List <IBuilderStrategy> strategiesInChain = new List <IBuilderStrategy>(chain);

            CollectionAssertExtensions.AreEqual(strategies, strategiesInChain);
        }
Exemple #2
0
 public TTypeToBuild BuildUp <TTypeToBuild>(IReadWriteLocator locator,
                                            ILifetimeContainer lifetime,
                                            IPolicyList policies,
                                            IStrategyChain strategies,
                                            object buildKey,
                                            object existing)
 {
     return((TTypeToBuild)BuildUp(locator, lifetime, policies, strategies, buildKey, existing));
 }
Exemple #3
0
 /// <summary>
 /// Add an extension object to the container.
 /// </summary>
 /// <param name="extension"><see cref="UnityContainerExtension"/> to add.</param>
 /// <returns>The <see cref="UnityContainer"/> object that this method was called on (this in C#, Me in Visual Basic).</returns>
 public override IUnityContainer AddExtension(UnityContainerExtension extension)
 {
     extensions.Add(extension);
     extension.InitializeExtension(new ExtensionContextImpl(this));
     lock (cachedStrategiesLock)
     {
         cachedStrategies = null;
     }
     return(this);
 }
        /*----------------------------------------------------------------------------------------*/
        /// <summary>
        /// Releases all resources held by the object.
        /// </summary>
        /// <param name="disposing"><see langword="True"/> if managed objects should be disposed, otherwise <see langword="false"/>.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && !IsDisposed)
            {
                DisposeCollection(Strategies);
                Strategies = null;
            }

            base.Dispose(disposing);
        }
Exemple #5
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;
 }
Exemple #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;
 }
 /// <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="locator">The <see cref="IReadWriteLocator"/> 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, IReadWriteLocator locator, ILifetimeContainer lifetime, IPolicyList persistentPolicies, IPolicyList transientPolicies, object buildKey, object existing)
 {
     this.chain = chain;
     this.lifetime = lifetime;
     this.locator = locator;
     this.persistentPolicies = persistentPolicies;
     this.policies = transientPolicies;
     this.originalBuildKey = buildKey;
     this.buildKey = buildKey;
     this.existing = existing;
 }
Exemple #8
0
        static void AssertOrder(IStrategyChain chain,
                                params FakeStrategy[] strategies)
        {
            IBuilderStrategy current = chain.Head;

            foreach (FakeStrategy strategy in strategies)
            {
                Assert.Same(strategy, current);
                current = chain.GetNext(current);
            }
        }
 /// <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="locator">The <see cref="IReadWriteLocator"/> 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, IReadWriteLocator locator, ILifetimeContainer lifetime, IPolicyList persistentPolicies, IPolicyList transientPolicies, object buildKey, object existing)
 {
     this.chain              = chain;
     this.lifetime           = lifetime;
     this.locator            = locator;
     this.persistentPolicies = persistentPolicies;
     this.policies           = transientPolicies;
     this.originalBuildKey   = buildKey;
     this.buildKey           = buildKey;
     this.existing           = existing;
 }
        static EnterpriseLibraryFactory()
        {
            builder = new Builder();
            StagedStrategyChain <BuilderStage> stagedStrategyChain = new StagedStrategyChain <BuilderStage>();

            stagedStrategyChain.AddNew <ConfigurationNameMappingStrategy>(BuilderStage.PreCreation);
            stagedStrategyChain.AddNew <LocatorLookupStrategy>(BuilderStage.PreCreation);
            stagedStrategyChain.AddNew <ConfiguredObjectStrategy>(BuilderStage.PreCreation);
            stagedStrategyChain.AddNew <InstrumentationStrategy>(BuilderStage.PostInitialization);
            strategyChain = stagedStrategyChain.MakeStrategyChain();
        }
 /// <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;
 }
Exemple #12
0
        public IUnityContainer AddExtension(UnityContainerExtension extension)
        {
            Unity.Utility.Guard.ArgumentNotNull(extensions, "extensions");

            extensions.Add(extension);
            extension.InitializeExtension(new ExtensionContextImpl(this));
            lock (cachedStrategiesLock)
            {
                cachedStrategies = null;
            }
            return(this);
        }
Exemple #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="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;
 }
Exemple #14
0
 public BuilderContext(IStrategyChain chain,
                       IReadWriteLocator locator,
                       ILifetimeContainer lifetime,
                       IPolicyList policies,
                       object originalBuildKey)
 {
     this.chain            = chain;
     this.locator          = locator;
     this.lifetime         = lifetime;
     this.originalBuildKey = originalBuildKey;
     this.policies         = new PolicyList(policies);
 }
 /// <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;
 }
Exemple #16
0
        public object BuildUp(IReadWriteLocator locator,
                              ILifetimeContainer lifetime,
                              IPolicyList policies,
                              IStrategyChain strategies,
                              object buildKey,
                              object existing)
        {
            Guard.ArgumentNotNull(strategies, "strategies");

            BuilderContext context = new BuilderContext(strategies, locator, lifetime, policies, buildKey, existing);

            return(strategies.ExecuteBuildUp(context));
        }
Exemple #17
0
        private void InitializeBuilderState()
        {
            registeredNames = new NamedTypesRegistry(ParentNameRegistry);
            extensions      = new List <UnityContainerExtension>();

            lifetimeContainer   = new LifetimeContainer();
            strategies          = new StagedStrategyChain <UnityBuildStage>(ParentStrategies);
            buildPlanStrategies = new StagedStrategyChain <UnityBuildStage>(ParentBuildPlanStrategies);
            policies            = new PolicyList(ParentPolicies);

            cachedStrategies     = null;
            cachedStrategiesLock = new object();
        }
Exemple #18
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;
 }
 /// <summary>
 ///   Initialize a new instance of the <see cref = "BuilderContext" /> class with a <see cref = "IStrategyChain" />, 
 ///   <see cref = "ILifetimeContainer" />, <see cref = "IPolicyList" /> and the 
 ///   build key used to start this build operation.
 /// </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 = "policies">The <see cref = "IPolicyList" /> to use for this context.</param>
 /// <param name = "originalBuildKey">Build key to start building.</param>
 /// <param name = "existing">The existing object to build up.</param>
 public BuilderContext(IStrategyChain chain,
     ILifetimeContainer lifetime,
     IPolicyList policies,
     NamedTypeBuildKey originalBuildKey,
     object existing)
 {
     this.chain = chain;
     this.lifetime = lifetime;
     this.originalBuildKey = originalBuildKey;
     BuildKey = originalBuildKey;
     persistentPolicies = policies;
     this.policies = new PolicyList(persistentPolicies);
     Existing = existing;
 }
Exemple #20
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;
 }
Exemple #21
0
        /// <summary>
        /// Performs an unbuild operation.
        /// </summary>
        /// <typeparam name="TItem">The type to unbuild. If not provided, it will be inferred from the
        /// type of item.
        /// </typeparam>
        /// <param name="locator">The locator to be used for this build operation.</param>
        /// <param name="lifetime">The <see cref="ILifetimeContainer"/> to use for this build operation.</param>
        /// <param name="policies">
        /// The transient policies to apply to this build. These
        /// policies take precedence over any permanent policies built into the builder.
        /// </param>
        /// <param name="strategies">
        /// The <see cref="IStrategyChain"/> to use for this build operation.
        /// </param>
        /// <param name="item">The item to tear down.</param>
        /// <returns>The torn down item.</returns>
        public TItem TearDown <TItem>(IReadWriteLocator locator,
                                      ILifetimeContainer lifetime,
                                      IPolicyList policies,
                                      IStrategyChain strategies,
                                      TItem item)
        {
            Guard.ArgumentNotNull(item, "item");
            Guard.ArgumentNotNull(strategies, "strategies");

            BuilderContext context = new BuilderContext(strategies.Reverse(), locator, lifetime, policies, null, item);

            context.Strategies.ExecuteTearDown(context);
            return((TItem)(context.Existing));
        }
        public void InnerStrategiesComeBeforeOuterStrategiesInStrategyChain()
        {
            StagedStrategyChain <FakeStage> innerChain = new StagedStrategyChain <FakeStage>();
            StagedStrategyChain <FakeStage> outerChain = new StagedStrategyChain <FakeStage>(innerChain);
            FakeStrategy innerStrategy = new FakeStrategy();
            FakeStrategy outerStrategy = new FakeStrategy();

            innerChain.Add(innerStrategy, FakeStage.Stage1);
            outerChain.Add(outerStrategy, FakeStage.Stage1);

            IStrategyChain chain = outerChain.MakeStrategyChain();

            AssertOrder(chain, innerStrategy, outerStrategy);
        }
Exemple #23
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;
        }
        public void MultipleChildContainers()
        {
            StagedStrategyChain <FakeStage> innerChain = new StagedStrategyChain <FakeStage>();
            StagedStrategyChain <FakeStage> outerChain = new StagedStrategyChain <FakeStage>(innerChain);
            StagedStrategyChain <FakeStage> superChain = new StagedStrategyChain <FakeStage>(outerChain);

            FakeStrategy innerStrategy = new FakeStrategy();
            FakeStrategy outerStrategy = new FakeStrategy();
            FakeStrategy superStrategy = new FakeStrategy();

            innerChain.Add(innerStrategy, FakeStage.Stage1);
            outerChain.Add(outerStrategy, FakeStage.Stage1);
            superChain.Add(superStrategy, FakeStage.Stage1);

            IStrategyChain chain = superChain.MakeStrategyChain();

            AssertOrder(chain, innerStrategy, outerStrategy, superStrategy);
        }
        public void OrderingAcrossStagesForStrategyChain()
        {
            StagedStrategyChain <FakeStage> innerChain = new StagedStrategyChain <FakeStage>();
            StagedStrategyChain <FakeStage> outerChain = new StagedStrategyChain <FakeStage>(innerChain);
            FakeStrategy innerStage1 = new FakeStrategy();
            FakeStrategy innerStage2 = new FakeStrategy();
            FakeStrategy outerStage1 = new FakeStrategy();
            FakeStrategy outerStage2 = new FakeStrategy();

            innerChain.Add(innerStage1, FakeStage.Stage1);
            innerChain.Add(innerStage2, FakeStage.Stage2);
            outerChain.Add(outerStage1, FakeStage.Stage1);
            outerChain.Add(outerStage2, FakeStage.Stage2);

            IStrategyChain chain = outerChain.MakeStrategyChain();

            AssertOrder(chain, innerStage1, outerStage1, innerStage2, outerStage2);
        }
Exemple #26
0
        private IStrategyChain GetStrategies()
        {
            IStrategyChain buildStrategies = cachedStrategies;

            if (buildStrategies == null)
            {
                lock (cachedStrategiesLock)
                {
                    if (cachedStrategies == null)
                    {
                        buildStrategies  = strategies.MakeStrategyChain();
                        cachedStrategies = buildStrategies;
                    }
                    else
                    {
                        buildStrategies = cachedStrategies;
                    }
                }
            }
            return(buildStrategies);
        }
Exemple #27
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);
            }
        }
Exemple #28
0
 private IStrategyChain GetStrategies()
 {
     IStrategyChain buildStrategies = cachedStrategies;
     if(buildStrategies == null)
     {
         lock(cachedStrategiesLock)
         {
             if(cachedStrategies == null)
             {
                 buildStrategies = strategies.MakeStrategyChain();
                 cachedStrategies = buildStrategies;
             }
             else
             {
                 buildStrategies = cachedStrategies;
             }
         }
     }
     return buildStrategies;
 }
Exemple #29
0
        private void InitializeBuilderState()
        {
            registeredNames = new NamedTypesRegistry(ParentNameRegistry);
            extensions = new List<UnityContainerExtension>();

            locator = new Locator(ParentLocator);
            lifetimeContainer = new LifetimeContainer();
            strategies = new StagedStrategyChain<UnityBuildStage>(ParentStrategies);
            buildPlanStrategies = new StagedStrategyChain<UnityBuildStage>(ParentBuildPlanStrategies);
            policies = new PolicyList(ParentPolicies);

            cachedStrategies = null;
            cachedStrategiesLock = new object();
        }
Exemple #30
0
        public IUnityContainer AddExtension(UnityContainerExtension extension)
        {
            Unity.Utility.Guard.ArgumentNotNull(extensions, "extensions");

            extensions.Add(extension);
            extension.InitializeExtension(new ExtensionContextImpl(this));
            lock (cachedStrategiesLock)
            {
                cachedStrategies = null;
            }
            return this;
        }
Exemple #31
0
        /// <summary>
        /// Add an extension object to the container.
        /// </summary>
        /// <param name="extension"><see cref="UnityContainerExtension"/> to add.</param>
        /// <returns>The <see cref="UnityContainer"/> object that this method was called on (this in C#, Me in Visual Basic).</returns>
        public override IUnityContainer AddExtension(UnityContainerExtension extension)
        {

            extensions.Add(extension);
            extension.InitializeExtension(new ExtensionContextImpl(this));
            lock(cachedStrategiesLock)
            {
                cachedStrategies = null;
            }
            return this;
        }
Exemple #32
0
 public FactoryContext(PolicyList policies, IStrategyChain strategies)
 {
     this.policies   = policies.Validation().NotNull("policies");
     this.strategies = strategies.Validation().NotNull("strategies");
 }
Exemple #33
0
 public FactoryContext(IStrategyChain strategies)
     : this(new PolicyList(), strategies)
 {
 }
Exemple #34
0
 private void OnStrategiesChanged(object sender, EventArgs e)
 {
     _registerTypeStrategies = _strategies.OfType <IRegisterTypeStrategy>().ToArray();
     _strategyChain          = new StrategyChain(_strategies);
 }
 /*----------------------------------------------------------------------------------------*/
 /// <summary>
 /// Initializes a new instance of the <see cref="KernelComponentWithStrategies{TStrategy}"/> class.
 /// </summary>
 protected KernelComponentWithStrategies()
 {
     Strategies = new StrategyChain <TStrategy>(this);
 }
Exemple #36
0
 public FactoryContext(IStrategyChain strategies)
     : this(new PolicyList(), strategies)
 {
 }
Exemple #37
0
 public FactoryContext(PolicyList policies, IStrategyChain strategies)
 {
     this.policies = policies.Validation().NotNull("policies");
     this.strategies = strategies.Validation().NotNull("strategies");
 }
Exemple #38
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;
 }
        protected virtual IFactoryContext CreateFactoryContext()
        {
            IStrategyChain strategies = CreateStrategyChain();

            return(new FactoryContext(strategies));
        }
 private static void AssertOrder(IStrategyChain chain,
     params FakeStrategy[] strategies)
 {
     List<IBuilderStrategy> strategiesInChain = new List<IBuilderStrategy>(chain);
     CollectionAssertExtensions.AreEqual(strategies, strategiesInChain);
 }