public static IExceptionMappingBuilder SerializeAsProblemDetails(this IExceptionMappingBuilder builder, IConfiguration configuration) { builder.Services .Configure <ProblemDetailsSerializationOptions>(configuration) .AddSingleton(ctx => ctx.GetService <IOptionsMonitor <ProblemDetailsSerializationOptions> >().CurrentValue) ; return(builder.AddExceptionHandler <ProblemDetailsSerializationHandler>()); }
/// <summary> /// Registers all <see cref="IExceptionHandler"/> found in the assembly <see cref="ForEvolve.ExceptionMapper"/> /// with singleton lifetime. /// </summary> public static IExceptionMappingBuilder MapHttpFallback(this IExceptionMappingBuilder builder, Action <FallbackExceptionHandlerOptions> setup = null) { if (setup != null) { builder.Services.Configure(setup); } return(builder.AddExceptionHandler <FallbackExceptionHandler>()); }
/// <summary> /// Registers all <see cref="IExceptionHandler"/> found in the assembly <see cref="ForEvolve.ExceptionMapper"/> /// with singleton lifetime. /// </summary> public static IExceptionMappingBuilder MapCommonHttpExceptions(this IExceptionMappingBuilder builder) { return(builder.ScanHandlersFrom( s => s .FromAssembliesOf(typeof(CommonHttpExceptionHandlersMappingBuilderExtensions)) .AddClasses(x => x.InExactNamespaceOf <ConflictExceptionHandler>()), ServiceLifetime.Singleton )); }
public static IExceptionMappingBuilder ScanHandlersFrom(this IExceptionMappingBuilder builder, Func <ITypeSourceSelector, IImplementationTypeSelector> typeSelector, ServiceLifetime lifetime = ServiceLifetime.Singleton) { if (typeSelector == null) { throw new ArgumentNullException(nameof(typeSelector)); } builder.Services.Scan(s => typeSelector(s) .AddClasses(f => f.AssignableTo <IExceptionHandler>()) .As <IExceptionHandler>() .WithLifetime(lifetime) ); return(builder); }
public static IExceptionMappingBuilder Map <TException>(this IExceptionMappingBuilder builder, Action <FluentMapperBuilder <TException> > mapperAction) where TException : Exception { if (mapperAction == null) { throw new ArgumentNullException(nameof(mapperAction)); } var handler = new FluentExceptionHandler <TException>(); var fluentMapper = new FluentMapperBuilder <TException>(builder, handler); builder.AddExceptionHandler(handler); mapperAction.Invoke(fluentMapper); return(builder); }
public FluentMapperBuilder(IExceptionMappingBuilder builder, FluentExceptionHandler <TException> handler) { Builder = builder ?? throw new ArgumentNullException(nameof(builder)); Handler = handler ?? throw new ArgumentNullException(nameof(handler)); }
public static IExceptionMappingBuilder AddExceptionHandler <THandler>(this IExceptionMappingBuilder builder) where THandler : class, IExceptionHandler { builder.Services.AddSingleton <IExceptionHandler, THandler>(); return(builder); }
/// <typeparam name="T">The type in which assembly that should be scanned.</typeparam> public static IExceptionMappingBuilder ScanHandlersFromAssemblyOf <T>(this IExceptionMappingBuilder builder, ServiceLifetime lifetime = ServiceLifetime.Singleton) { return(builder.ScanHandlersFrom(s => s.FromAssemblyOf <T>(), lifetime)); }
public static IExceptionMappingBuilder SerializeAsProblemDetails(this IExceptionMappingBuilder builder) => SerializeAsProblemDetails(builder, new ProblemDetailsSerializationOptions());
public static IExceptionMappingBuilder SerializeAsProblemDetails(this IExceptionMappingBuilder builder, ProblemDetailsSerializationOptions options) { builder.Services.AddSingleton(options); return(builder.AddExceptionHandler <ProblemDetailsSerializationHandler>()); }