/// <summary> /// RegisterTypeAsImplementedInterfaces /// </summary> /// <param name="services">services</param> /// <param name="typesFilter">filter types to register</param> /// <param name="interfaceTypeFilter">filter interface types to register</param> /// <param name="serviceLifetime">service lifetime</param> /// <param name="assemblies">assemblies</param> /// <returns>services</returns> public static IServiceContainerBuilder RegisterAssemblyTypesAsImplementedInterfaces([NotNull] this IServiceContainerBuilder services, Func <Type, bool>?typesFilter, Func <Type, bool>?interfaceTypeFilter, ServiceLifetime serviceLifetime, params Assembly[] assemblies) { Guard.NotNull(assemblies, nameof(assemblies)); if (assemblies.Length == 0) { assemblies = ReflectHelper.GetAssemblies(); } var types = assemblies .Select(assembly => assembly.GetTypes()) .SelectMany(t => t) .Where(t => !t.IsAbstract) ; if (typesFilter != null) { types = types.Where(typesFilter); } foreach (var type in types) { foreach (var implementedInterface in type.GetImplementedInterfaces()) { if (interfaceTypeFilter?.Invoke(implementedInterface) != false) { services.Add(new ServiceDefinition(implementedInterface, type, serviceLifetime)); } } } return(services); }
public static IServiceContainerBuilder AddProxyService <TService>(this IServiceContainerBuilder serviceCollection, ServiceLifetime serviceLifetime) where TService : class { serviceCollection.Add(new ServiceDefinition(typeof(TService), sp => { var proxyFactory = sp.ResolveRequiredService <IProxyFactory>(); return(proxyFactory.CreateProxy <TService>()); }, serviceLifetime)); return(serviceCollection); }
/// <summary> /// RegisterTypeAsImplementedInterfaces /// </summary> /// <param name="services">services</param> /// <param name="type">type</param> /// <param name="serviceLifetime">service lifetime</param> /// <returns>services</returns> public static IServiceContainerBuilder RegisterTypeAsImplementedInterfaces([NotNull] this IServiceContainerBuilder services, Type type, ServiceLifetime serviceLifetime = ServiceLifetime.Singleton) { if (type != null) { foreach (var interfaceType in type.GetImplementedInterfaces()) { services.Add(new ServiceDefinition(interfaceType, type, serviceLifetime)); } } return(services); }
/// <summary> /// RegisterTypeAsImplementedInterfaces /// </summary> /// <param name="services">services</param> /// <param name="type">type</param> /// <param name="interfaceTypeFilter">interfaceTypeFilter</param> /// <param name="serviceLifetime">service lifetime</param> /// <returns>services</returns> public static IServiceContainerBuilder RegisterTypeAsImplementedInterfaces(this IServiceContainerBuilder services, Type type, Func <Type, bool>?interfaceTypeFilter, ServiceLifetime serviceLifetime = ServiceLifetime.Singleton) { Guard.NotNull(type); foreach (var interfaceType in type.GetImplementedInterfaces()) { if (interfaceTypeFilter?.Invoke(interfaceType) != false) { services.Add(new ServiceDefinition(interfaceType, type, serviceLifetime)); } } return(services); }
/// <summary> /// RegisterAssemblyTypes /// </summary> /// <param name="services">services</param> /// <param name="typesFilter">filter types to register</param> /// <param name="serviceLifetime">service lifetime</param> /// <param name="assemblies">assemblies</param> /// <returns>services</returns> public static IServiceContainerBuilder RegisterAssemblyTypes([NotNull] this IServiceContainerBuilder services, Func <Type, bool> typesFilter, ServiceLifetime serviceLifetime, params Assembly[] assemblies) { if (assemblies == null || assemblies.Length == 0) { assemblies = ReflectHelper.GetAssemblies(); } var types = assemblies .Select(assembly => assembly.GetExportedTypes()) .SelectMany(t => t); if (typesFilter != null) { types = types.Where(typesFilter); } foreach (var type in types) { services.Add(new ServiceDefinition(type, type, serviceLifetime)); } return(services); }
public static IServiceContainerBuilder AddSingleton <TService>([NotNull] this IServiceContainerBuilder serviceContainerBuilder, [NotNull] TService service) { serviceContainerBuilder.Add(new ServiceDefinition(service, typeof(TService))); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddTransient <TService, TServiceImplement>(this IServiceContainerBuilder serviceContainerBuilder) where TServiceImplement : TService { serviceContainerBuilder.Add(ServiceDefinition.Transient <TService, TServiceImplement>()); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddTransient <TService>(this IServiceContainerBuilder serviceContainerBuilder) { serviceContainerBuilder.Add(ServiceDefinition.Transient <TService>()); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddScoped([NotNull] this IServiceContainerBuilder serviceContainerBuilder, [NotNull] Type serviceType, [NotNull] Type implementType) { serviceContainerBuilder.Add(new ServiceDefinition(serviceType, implementType, ServiceLifetime.Scoped)); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddTransient(this IServiceContainerBuilder serviceContainerBuilder, Type serviceType, Type implementType) { serviceContainerBuilder.Add(new ServiceDefinition(serviceType, implementType, ServiceLifetime.Transient)); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddScoped <TService>(this IServiceContainerBuilder serviceContainerBuilder) { serviceContainerBuilder.Add(ServiceDefinition.Scoped <TService>()); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddSingleton(this IServiceContainerBuilder serviceContainerBuilder, Type serviceType) { serviceContainerBuilder.Add(new ServiceDefinition(serviceType, ServiceLifetime.Singleton)); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddTransient([NotNull] this IServiceContainerBuilder serviceContainerBuilder, [NotNull] Type serviceType) { serviceContainerBuilder.Add(new ServiceDefinition(serviceType, ServiceLifetime.Transient)); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddScoped <TService, TServiceImplement>([NotNull] this IServiceContainerBuilder serviceContainerBuilder) where TServiceImplement : TService { serviceContainerBuilder.Add(ServiceDefinition.Scoped <TService, TServiceImplement>()); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddScoped <TService>([NotNull] this IServiceContainerBuilder serviceContainerBuilder, [NotNull] Func <IServiceProvider, object> func) { serviceContainerBuilder.Add(ServiceDefinition.Scoped <TService>(func)); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddTransient <TService>(this IServiceContainerBuilder serviceContainerBuilder, Func <IServiceProvider, object> func) { serviceContainerBuilder.Add(ServiceDefinition.Transient <TService>(func)); return(serviceContainerBuilder); }
public static IServiceContainerBuilder AddSingleton <TService>([NotNull] this IServiceContainerBuilder serviceContainerBuilder) { serviceContainerBuilder.Add(ServiceDefinition.Singleton <TService>()); return(serviceContainerBuilder); }