private static IEnumerable<Type> GetTypesToRegisterInternal(Container container,
            Type openGenericServiceType, AccessibilityOption accessibility, IEnumerable<Assembly> assemblies)
        {
            Requires.IsValidEnum(accessibility, nameof(accessibility));

            return container.GetTypesToRegister(openGenericServiceType, assemblies)
                .Where(GetAccessibilityFilter(accessibility));
        }
 private static Func<Type, bool> GetAccessibilityFilter(AccessibilityOption accessibility) => 
     accessibility == AccessibilityOption.AllTypes ? AllTypes : (Func<Type, bool>)PublicTypes;
 public static IEnumerable<Type> GetTypesToRegister(Container container, Type openGenericServiceType,
     AccessibilityOption accessibility, IEnumerable<Assembly> assemblies)
 {
     return GetTypesToRegisterInternal(container, openGenericServiceType, accessibility, assemblies);
 }
        public static void RegisterManyForOpenGeneric(this Container container,
            Type openGenericServiceType, AccessibilityOption accessibility, BatchRegistrationCallback callback,
            IEnumerable<Assembly> assemblies)
        {
            Requires.IsNotNull(callback, nameof(callback));

            var types = GetTypesToRegisterInternal(container, openGenericServiceType, accessibility, assemblies);

            container.RegisterCollection(openGenericServiceType, types);
        }
        public static void RegisterManyForOpenGeneric(this Container container,
            Type openGenericServiceType, AccessibilityOption accessibility, Lifestyle lifestyle,
            IEnumerable<Assembly> assemblies)
        {
            var types = GetTypesToRegisterInternal(container, openGenericServiceType, accessibility, assemblies);

            container.Register(openGenericServiceType, types, lifestyle);
        }
        public static void RegisterManyForOpenGeneric(this Container container,
            Type openGenericServiceType, AccessibilityOption accessibility, params Assembly[] assemblies)
        {
            var types =
                GetTypesToRegisterInternal(container, openGenericServiceType, accessibility, assemblies);

            container.Register(openGenericServiceType, types);
        }
 private static Func<Type, bool> GetAccessibilityFilter(AccessibilityOption accessibility)
 {
     if (accessibility == AccessibilityOption.AllTypes)
     {
         return type => true;
     }
     else
     {
         return type => type.IsPublic;
     }
 }