saritasa-nest / saritasa-dotnet-tools

Development Tools For Company'S .NET Projects.
BSD 2-Clause "Simplified" License
27 stars 13 forks source link

Remove internal resolver #39

Closed dermeister0 closed 5 years ago

dermeister0 commented 7 years ago

Replace internal resolver with helper methods for easy dependency injection registration.

public static class ServiceCollectionExtensions
{
    public void AddCommandHandlers(this IServiceCollection services, params Assembly[] assemblies)
    {
        // Find all classes with CommandHandlers attribute, register them.
    }

    public void AddQueryHandlers(this IServiceCollection services, params Assembly[] assemblies)
    {
        // Find all classes with QueryHandlers attribute, register them for all implemented interfaces.
    }
}

In .NET Core:

    services.AddCommandHandlers(typeof(UserHandlers).GetTypeInfo().Assembly);
    services.AddQueryHandlers(typeof(UserQueries).GetTypeInfo().Assembly);

In .NET Framework using Autofac.Extensions.DependencyInjection:

    var builder = new ContainerBuilder();

    var services = new ServiceCollection();
    services.AddCommandHandlers(typeof(UserHandlers).Assembly);
    services.AddQueryHandlers(typeof(UserQueries).Assembly);

    builder.Populate(serviceCollection);