using NCC.Dependency; using NCC.FriendlyException; using Microsoft.AspNetCore.Mvc.Filters; using System; namespace Microsoft.Extensions.DependencyInjection { /// /// 友好异常服务拓展类 /// [SuppressSniffer] public static class FriendlyExceptionServiceCollectionExtensions { /// /// 添加友好异常服务拓展服务 /// /// 异常错误码提供器 /// Mvc构建器 /// 是否启用全局异常过滤器 /// public static IMvcBuilder AddFriendlyException(this IMvcBuilder mvcBuilder, Action configure = null) where TErrorCodeTypeProvider : class, IErrorCodeTypeProvider { mvcBuilder.Services.AddFriendlyException(configure); return mvcBuilder; } /// /// 添加友好异常服务拓展服务 /// /// 异常错误码提供器 /// /// /// public static IServiceCollection AddFriendlyException(this IServiceCollection services, Action configure = null) where TErrorCodeTypeProvider : class, IErrorCodeTypeProvider { // 添加全局异常过滤器 services.AddFriendlyException(configure); // 单例注册异常状态码提供器 services.AddSingleton(); return services; } /// /// 添加友好异常服务拓展服务 /// /// Mvc构建器 /// /// public static IMvcBuilder AddFriendlyException(this IMvcBuilder mvcBuilder, Action configure = null) { mvcBuilder.Services.AddFriendlyException(configure); return mvcBuilder; } /// /// 添加友好异常服务拓展服务 /// /// /// /// public static IServiceCollection AddFriendlyException(this IServiceCollection services, Action configure = null) { // 添加友好异常配置文件支持 services.AddConfigurableOptions(); // 添加异常配置文件支持 services.AddConfigurableOptions(); // 载入服务配置选项 var configureOptions = new FriendlyExceptionServiceOptions(); configure?.Invoke(configureOptions); // 添加全局异常过滤器 if (configureOptions.EnabledGlobalFriendlyException) services.AddMvcFilter(); return services; } } }