Exemplo n.º 1
0
        public TPolicyInterface GetPolicy <TPolicyInterface>()
        {
            return((TPolicyInterface)(Get(typeof(TPolicyInterface)) ?? (
#if NETCOREAPP1_0 || NETSTANDARD1_0
                                          RegistrationType.GetTypeInfo().IsGenericType
#else
                                          RegistrationType.IsGenericType
#endif
                ? Get(RegistrationType.GetGenericTypeDefinition(), Name, typeof(TPolicyInterface)) ??
                                          ((UnityContainer)Container).Defaults.Get(typeof(TPolicyInterface))
                : ((UnityContainer)Container).Defaults.Get(typeof(TPolicyInterface)))));
        }
Exemplo n.º 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);
        }