Search Results for

      Show / Hide Table of Contents

      Intent.Application.DependencyInjection.MediatR

      This module handles dependency injection concerns around using MediatR.

      MediatR is an open-source library for .NET applications that implements the Mediator pattern. It enables components in an application to communicate indirectly by sending messages (requests and notifications) to a central mediator. The mediator then dispatches these messages to their corresponding handlers, promoting loose coupling and separation of concerns. MediatR simplifies the implementation of the Mediator pattern in C# projects, leading to better code organization, testability, and maintenance in complex applications. It is a valuable tool for managing communication flow between components in modern .NET development.

      This could be visualized in code as follows, which could be found in your dependency injection registrations:

      services.AddMediatR(cfg =>
      {
          cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly());
          cfg.AddOpenBehavior(typeof(UnhandledExceptionBehaviour<,>));
          cfg.AddOpenBehavior(typeof(PerformanceBehaviour<,>));
          cfg.AddOpenBehavior(typeof(AuthorizationBehaviour<,>));
          cfg.AddOpenBehavior(typeof(ValidationBehaviour<,>));
          cfg.AddOpenBehavior(typeof(UnitOfWorkBehaviour<,>));
      });
      

      Any modules wanting to register up their own PipelineBehaviours can do so using the ContainerRegistrationRequest event.

      ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister($"typeof({ClassName}<,>)")
                      .ForInterface("typeof(IPipelineBehavior<,>)")
                      .WithPriority(4)
                      .ForConcern("MediatR")
                      .RequiresUsingNamespaces("MediatR")
                      .HasDependency(this));
      

      For more information on MediatR, check out their official GitHub.

      • Edit this page
      ☀
      ☾
      In this article
      Back to top Copyright © 2017-, Intent Architect Holdings Ltd