コード例 #1
0
        private ComponentLifecycleExtension GetDynamicParametersExtension(ComponentModel model)
        {
            if (model.ExtendedProperties.Contains(key))
            {
                return((ComponentLifecycleExtension)model.ExtendedProperties[key]);
            }

            var dynamicParameters = new ComponentLifecycleExtension();

            model.ExtendedProperties[key] = dynamicParameters;
            model.ResolveExtensions(true).Add(dynamicParameters);
            return(dynamicParameters);
        }
コード例 #2
0
        private IHandler CreateHandler(ComponentModel model)
        {
            if (model.RequiresGenericArguments)
            {
                var matchingStrategy = (IGenericImplementationMatchingStrategy)model.ExtendedProperties[ComponentModel.GenericImplementationMatchingStrategy];
                return(new DefaultGenericHandler(model, matchingStrategy));
            }
            var resolveExtensions = model.ResolveExtensions(false);
            var releaseExtensions = model.ReleaseExtensions(false);

            if (releaseExtensions == null && resolveExtensions == null)
            {
                return(new DefaultHandler(model));
            }
            return(new ExtendedHandler(model, resolveExtensions, releaseExtensions));
        }
コード例 #3
0
        private IHandler CreateHandler(ComponentModel model)
        {
            if (model.RequiresGenericArguments)
            {
                var matchingStrategy = GenericImplementationMatchingStrategy(model);
                var serviceStrategy  = GenericServiceStrategy(model);
                return(new DefaultGenericHandler(model, matchingStrategy, serviceStrategy));
            }

            // meta descriptors only apply to open generic handlers so we cam safely let go of them, save some memory
            ComponentModelDescriptorUtil.RemoveMetaDescriptors(model);

            var resolveExtensions = model.ResolveExtensions(false);
            var releaseExtensions = model.ReleaseExtensions(false);

            if (releaseExtensions == null && resolveExtensions == null)
            {
                return(new DefaultHandler(model));
            }
            return(new ExtendedHandler(model, resolveExtensions, releaseExtensions));
        }