MediatR.SimpleInjector

Register MediatR with SimpleInjector TargetFrameworks: - netstandard2.1;


Keywords
License
Apache-2.0
Install
Install-Package MediatR.SimpleInjector -Version 10.0.1

Documentation

MediatR.SimpleInjector

MediatR.SimpleInjector

Instead copy following code in every project (main project, test project, ....):

    private static void RegisterAssemblies(Container container)
    {
        var assemblies = GetAssemblies();
        container.RegisterSingleton<IMediator, Mediator>();
        container.Register(typeof(IRequestHandler<,>), assemblies);
        container.Register(typeof(IAsyncRequestHandler<,>), assemblies);
        container.Register(typeof(ICancellableAsyncRequestHandler<>), assemblies);
        container.RegisterCollection(typeof(INotificationHandler<>), assemblies);
        container.RegisterCollection(typeof(IAsyncNotificationHandler<>), assemblies);
        container.RegisterCollection(typeof(ICancellableAsyncNotificationHandler<>), assemblies);
        container.RegisterCollection(typeof(IPipelineBehavior<,>), assemblies);

        container.Register(() => Mapper.Instance);
        container.RegisterSingleton(new SingleInstanceFactory(container.GetInstance));
        container.RegisterSingleton(new MultiInstanceFactory(container.GetAllInstances));
    }

    private static IEnumerable<Assembly> GetAssemblies()
    {
        yield return typeof(IMediator).GetTypeInfo().Assembly;
        yield return typeof(TestCommand).GetTypeInfo().Assembly;
    }

Just use MediatR.SimpleInjector as following:

    public static Container RegisterMediator(this Container container)
    {
        var assemblies = GetAssemblies();
        return container.BuildMediator(assemblies);
    }

    private static IEnumerable<Assembly> GetAssemblies()
    {
        yield return typeof(TestCommand).GetTypeInfo().Assembly;
    }