internal UnityContainer(BuildStrategy strategy)
            : this()
        {
            switch (strategy)
            {
            case BuildStrategy.Compiled:
                _buildStrategy = CompilingFactory;
                Defaults.Set(typeof(ResolveDelegateFactory), _buildStrategy);
                break;

            case BuildStrategy.Resolved:
                _buildStrategy = ResolvingFactory;
                Defaults.Set(typeof(ResolveDelegateFactory), _buildStrategy);
                break;
            }
        }
Пример #2
0
        public ResolveDelegateFactory GetFactory()
        {
            // From registration
            ResolveDelegateFactory policy = Registration.Get <ResolveDelegateFactory>();

            if (null != policy)
            {
                return(policy);
            }

            if (Registration is ExplicitRegistration registration)
            {
#if NETCOREAPP1_0 || NETSTANDARD1_0
                if (Type?.GetTypeInfo().IsGenericType ?? false)
#else
                if (Type?.IsGenericType ?? false)
#endif
                {
                    return(((UnityContainer)Container).GetFactoryPolicy(Type.GetGenericTypeDefinition(), Name) ??
                           ((UnityContainer)Container).Defaults.ResolveDelegateFactory);
                }
                else if (RegistrationType.IsArray)
                {
                    return(ArrayResolver.Factory);
                }
            }
            else
            {
#if NETCOREAPP1_0 || NETSTANDARD1_0
                if (RegistrationType.GetTypeInfo().IsGenericType)
#else
                if (RegistrationType.IsGenericType)
#endif
                {
                    return(((UnityContainer)Container).GetFactoryPolicy(RegistrationType.GetGenericTypeDefinition(), Name) ??
                           ((UnityContainer)Container).Defaults.ResolveDelegateFactory);
                }
                else if (RegistrationType.IsArray)
                {
                    return(ArrayResolver.Factory);
                }
            }

            return(((UnityContainer)Container).GetFactoryPolicy(Type) ??
                   ((UnityContainer)Container).Defaults.ResolveDelegateFactory);
        }
Пример #3
0
 public DefaultPolicies(ResolveDelegateFactory factory)
     : base(typeof(ResolveDelegateFactory), factory)
 {
 }