using System.Reflection; using FluentValidation; using MediatR; using Microsoft.Extensions.DependencyInjection; using MyNewProjectName.Application.Behaviors; namespace MyNewProjectName.Application; /// /// Dependency Injection for Application Layer /// public static class DependencyInjection { public static IServiceCollection AddApplication(this IServiceCollection services) { var assembly = Assembly.GetExecutingAssembly(); // Register AutoMapper services.AddAutoMapper(assembly); // Register MediatR services.AddMediatR(cfg => { cfg.RegisterServicesFromAssembly(assembly); // Logging phải đứng đầu tiên để ghi nhận request đến cfg.AddBehavior(typeof(IPipelineBehavior<,>), typeof(LoggingBehavior<,>)); // Sau đó mới đến Validation cfg.AddBehavior(typeof(IPipelineBehavior<,>), typeof(ValidationBehavior<,>)); }); // Register FluentValidation validators services.AddValidatorsFromAssembly(assembly); return services; } }