Esempio n. 1
0
        ///<summary>
        ///  Clone some of the parent componentmodel properties to the generic subhandler.
        ///</summary>
        ///<remarks>
        ///  The following properties are copied: <list type = "bullet">
        ///                                         <item>
        ///                                           <description>
        ///                                             The
        ///                                             <see cref = "LifestyleType" />
        ///                                           </description>
        ///                                         </item>
        ///                                         <item>
        ///                                           <description>
        ///                                             The
        ///                                             <see cref = "ComponentModel.Interceptors" />
        ///                                           </description>
        ///                                         </item>
        ///                                       </list>
        ///</remarks>
        ///<param name = "newModel"> the subhandler </param>
        private void CloneParentProperties(ComponentModel newModel)
        {
            // Inherits from LifeStyle's context.
            newModel.LifestyleType = ComponentModel.LifestyleType;

            // Inherit the parent handler interceptors.
            foreach (InterceptorReference interceptor in ComponentModel.Interceptors)
            {
                // we need to check that we are not adding the inteceptor again, if it was added
                // by a facility already
                newModel.Interceptors.AddIfNotInCollection(interceptor);
            }

            if (ComponentModel.HasCustomDependencies)
            {
                var dependencies = newModel.CustomDependencies;
                foreach (DictionaryEntry dependency in ComponentModel.CustomDependencies)
                {
                    dependencies.Add(dependency.Key, dependency.Value);
                }
            }
            var metaDescriptors = ComponentModel.GetMetaDescriptors(ensureExists: false);

            if (metaDescriptors != null)
            {
                foreach (var descriptor in metaDescriptors)
                {
                    descriptor.ConfigureComponentModel(Kernel, newModel);
                }
            }
        }
Esempio n. 2
0
        public ComponentModel BuildModel(IComponentModelDescriptor[] customContributors)
        {
            var model = new ComponentModel();

            customContributors.ForEach(c => c.BuildComponentModel(kernel, model));

            contributors.ForEach(c => c.ProcessModel(kernel, model));

            var metaDescriptors = default(ICollection <IMetaComponentModelDescriptor>);

            customContributors.ForEach(c =>
            {
                c.ConfigureComponentModel(kernel, model);
                var meta = c as IMetaComponentModelDescriptor;
                if (meta != null)
                {
                    if (metaDescriptors == null)
                    {
                        metaDescriptors = model.GetMetaDescriptors(true);
                    }
                    metaDescriptors.Add(meta);
                }
            });
            return(model);
        }