예제 #1
0
        public IBeanDefinitionContainer RegisterBeanDefinition(IBeanDefinition beanDefinition)
        {
            foreach (var type in beanDefinition.AutoWiredTypes)
            {
                if (!_registrations.ContainsKey(type))
                {
                    _registrations[type] = new BeanDefinitionHolder();
                }

                _registrations[type].Add(beanDefinition);
            }

            return(this);
        }
예제 #2
0
        public bool IsMatch(IBeanDefinition beanDefinition, IConfiguration configuration)
        {
            var profiles       = beanDefinition.Profiles;
            var activeProfiles = (configuration["profiles:active"] ?? "" + "," + configuration["UNITY_ADDON_PROFILES"] ?? "").Split(',')
                                 .Select(p => p.Trim())
                                 .Where(p => !string.IsNullOrWhiteSpace(p));

            if (profiles.Length > 0 && !profiles.Any(p => activeProfiles.Contains(p)))
            {
                return(true);
            }

            return(false);
        }
        public bool Filter(IBeanDefinition definition)
        {
            if (_excludeFilters.Any(f => f.IsMatch(definition, Configuration)))
            {
                return(false);
            }

            if (_includeFilters.Count() == 0 || _includeFilters.Any(f => f.IsMatch(definition, Configuration)))
            {
                return(true);
            }

            return(false);
        }
예제 #4
0
        public override void PreBuildUp(ref BuilderContext context)
        {
            var             appContainer = Sp.UnityContainer;
            IBeanDefinition beanDef      = null;

            if (BeanDefinitionContainer.HasBeanDefinition(context.Type, context.Name))
            {
                beanDef = BeanDefinitionContainer.GetBeanDefinition(context.Type, context.Name);
            }
            else if (context.Type.IsGenericType && BeanDefinitionContainer.HasBeanDefinition(context.Type.GetGenericTypeDefinition(), context.Name))
            {
                var genericTypeDef = context.Type.GetGenericTypeDefinition();
                beanDef = BeanDefinitionContainer.GetBeanDefinition(genericTypeDef, context.Name);
            }

            if (beanDef != null && beanDef.Scope is SingletonLifetimeManager && context.Container != appContainer)
            {
                context.Existing      = appContainer.Resolve(context.Type, context.Name);
                context.BuildComplete = true;
                return;
            }

            base.PreBuildUp(ref context);
        }
예제 #5
0
 public override void Add(IBeanDefinition beanDefinition)
 {
     ConfigureBeans(config => config.Add(beanDefinition));
 }
예제 #6
0
 public bool IsMatch(IBeanDefinition beanDefinition, IConfiguration configuration)
 {
     return(_namespaces.Any(ns => beanDefinition.Namespace.StartsWith(ns)));
 }
예제 #7
0
 public abstract void Add(IBeanDefinition beanDefinition);