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; } }