Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public static INightLibBuilder AddDependencies(this INightLibBuilder builder, params Type[] types)
 => builder.AddDependencies(types.GetAssemblies());
Exemplo n.º 5
0
 public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, ServiceLifetime lifetime, params Assembly[] assemblies)
 => RegisterHandlers(typeof(IDomainEventHandler <>), lifetime, builder, assemblies);
Exemplo n.º 6
0
 public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, ServiceLifetime lifetime, params Type[] types)
 => builder.AddDomainEvents(lifetime, types.GetAssemblies());
Exemplo n.º 7
0
 public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, params Assembly[] assemblies)
 => builder.AddDomainEvents(ServiceLifetime.Scoped, assemblies);
Exemplo n.º 8
0
 public static INightLibBuilder AddDomainEvents(this INightLibBuilder builder, params Type[] types)
 => builder.AddDomainEvents(types.GetAssemblies());
Exemplo n.º 9
0
 public static INightLibBuilder AddSettings(this INightLibBuilder builder, IConfiguration configuration, params Type[] types)
 => builder.AddSettings(configuration, types.GetAssemblies());