public static INightLibBuilder AddDependencies(this INightLibBuilder builder, params Assembly[] assemblies) { QueryType.InAssemblies(assemblies) .AreNotAbstract() .HasAnyAttribute(typeof(SingletonAttribute), typeof(ScopedAttribute), typeof(TransientAttribute)) .ForEach(implementationType => { foreach (var attr in MainUtil.GetAttributes <SingletonAttribute>(implementationType)) { var serviceDescriptor = new ServiceDescriptor(attr.Type, implementationType, ServiceLifetime.Singleton); builder.Services.Add(serviceDescriptor); } foreach (var attr in MainUtil.GetAttributes <ScopedAttribute>(implementationType)) { var serviceDescriptor = new ServiceDescriptor(attr.Type, implementationType, ServiceLifetime.Scoped); builder.Services.Add(serviceDescriptor); } foreach (var attr in MainUtil.GetAttributes <TransientAttribute>(implementationType)) { var serviceDescriptor = new ServiceDescriptor(attr.Type, implementationType, ServiceLifetime.Transient); builder.Services.Add(serviceDescriptor); } }); return(builder); }
public static INightLibBuilder AddSettings(this INightLibBuilder builder, IConfiguration configuration, params Assembly[] assemblies) { QueryType.InAssemblies(assemblies) .AreNotAbstract() .InheritFromInterface <ISetting>() .ForEach(x => NightLibRegistrationHelper.AddSettings(x, configuration, builder.Services)); return(builder); }
private static INightLibBuilder RegisterHandlers(Type handlerType, ServiceLifetime lifetime, INightLibBuilder builder, Assembly[] assemblies) { QueryType.InAssemblies(assemblies) .AreNotAbstract() .InheritFromInterface(handlerType) .ForEach(implementationType => { var argTypes = MainUtil.GetGenericArgumentsFromOpenGenericInterface(implementationType, handlerType); var serviceType = handlerType.MakeGenericType(argTypes); builder.Services.Add(new ServiceDescriptor(serviceType, implementationType, lifetime)); }); return(builder); }
public static INightLibBuilder AddDependencies(this INightLibBuilder builder, params Type[] types) => builder.AddDependencies(types.GetAssemblies());
public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, ServiceLifetime lifetime, params Assembly[] assemblies) => RegisterHandlers(typeof(IDomainEventHandler <>), lifetime, builder, assemblies);
public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, ServiceLifetime lifetime, params Type[] types) => builder.AddDomainEvents(lifetime, types.GetAssemblies());
public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, params Assembly[] assemblies) => builder.AddDomainEvents(ServiceLifetime.Scoped, assemblies);
public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, params Type[] types) => builder.AddDomainEvents(types.GetAssemblies());
public static INightLibBuilder AddSettings(this INightLibBuilder builder, IConfiguration configuration, params Type[] types) => builder.AddSettings(configuration, types.GetAssemblies());