initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using Application.Common.Behaviors;
|
||||
using FluentValidation;
|
||||
using MediatR;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Application;
|
||||
|
||||
public static class DependencyInjection
|
||||
{
|
||||
public static IServiceCollection AddApplicationServices(this IServiceCollection services)
|
||||
{
|
||||
//>>> AutoMapper
|
||||
services.AddAutoMapper(Assembly.GetExecutingAssembly());
|
||||
|
||||
//>>> FluentValidation
|
||||
services.AddValidatorsFromAssembly(Assembly.GetExecutingAssembly());
|
||||
|
||||
//>>> MediatR
|
||||
services.AddMediatR(x =>
|
||||
{
|
||||
x.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly());
|
||||
x.AddBehavior(typeof(IPipelineBehavior<,>), typeof(LoggingBehaviour<,>));
|
||||
x.AddBehavior(typeof(IPipelineBehavior<,>), typeof(ValidationBehaviour<,>));
|
||||
});
|
||||
|
||||
//>>> Register services in Application.Features
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
var featureTypes = assembly.GetTypes()
|
||||
.Where(type => type.IsClass && !type.IsAbstract)
|
||||
.Where(type => type.Namespace != null && type.Namespace.StartsWith("Application.Features"));
|
||||
|
||||
foreach (var type in featureTypes)
|
||||
{
|
||||
var interfaces = type.GetInterfaces();
|
||||
foreach (var serviceInterface in interfaces)
|
||||
{
|
||||
services.AddScoped(serviceInterface, type);
|
||||
}
|
||||
if (!interfaces.Any())
|
||||
{
|
||||
services.AddScoped(type);
|
||||
}
|
||||
}
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user