/// <summary> /// Checks whether a given resolve middleware is one of the default middleware in <see cref="DefaultMiddleware"/>. /// </summary> /// <param name="middleware">The middleware to test.</param> /// <returns>True if the middleware is one of the defaults; false otherwise.</returns> public static bool IsDefaultMiddleware(IResolveMiddleware middleware) { foreach (var defaultItem in DefaultMiddleware) { if (defaultItem == middleware) { return(true); } } return(false); }
/// <inheritdoc/> public void RegisterServiceMiddleware(Service service, IResolveMiddleware middleware, MiddlewareInsertionMode insertionMode = MiddlewareInsertionMode.EndOfPhase) { if (service is null) { throw new ArgumentNullException(nameof(service)); } if (middleware is null) { throw new ArgumentNullException(nameof(middleware)); } _registeredServicesTracker.AddServiceMiddleware(service, middleware, insertionMode); }
/// <inheritdoc/> public void AddServiceMiddleware(Service service, IResolveMiddleware middleware, MiddlewareInsertionMode insertionMode = MiddlewareInsertionMode.EndOfPhase) { var info = GetServiceInfo(service); info.UseServiceMiddleware(middleware, insertionMode); }
/// <summary> /// Initializes a new instance of the <see cref="MiddlewareDiagnosticData"/> class. /// </summary> /// <param name="requestContext">The context for the resolve request that is running.</param> /// <param name="middleware">The middleware that is running.</param> public MiddlewareDiagnosticData(ResolveRequestContext requestContext, IResolveMiddleware middleware) { RequestContext = requestContext; Middleware = middleware; }
/// <summary> /// Register a resolve middleware for services providing a particular type. /// </summary> /// <typeparam name="TService">The service type.</typeparam> /// <param name="builder">The container builder.</param> /// <param name="middleware">The middleware to register.</param> /// <param name="insertionMode">The insertion mode of the middleware (start or end of phase).</param> public static void RegisterServiceMiddleware <TService>(this ContainerBuilder builder, IResolveMiddleware middleware, MiddlewareInsertionMode insertionMode = MiddlewareInsertionMode.EndOfPhase) { builder.RegisterServiceMiddleware(typeof(TService), middleware, insertionMode); }
/// <summary> /// Register a resolve middleware for a particular service. /// </summary> /// <param name="builder">The container builder.</param> /// <param name="service">The service to register middleware for.</param> /// <param name="middleware">The middleware to register.</param> /// <param name="insertionMode">The insertion mode of the middleware (start or end of phase).</param> public static void RegisterServiceMiddleware(this ContainerBuilder builder, Service service, IResolveMiddleware middleware, MiddlewareInsertionMode insertionMode = MiddlewareInsertionMode.EndOfPhase) { if (builder is null) { throw new ArgumentNullException(nameof(builder)); } if (service is null) { throw new ArgumentNullException(nameof(service)); } if (middleware is null) { throw new ArgumentNullException(nameof(middleware)); } builder.RegisterCallback(crb => crb.RegisterServiceMiddleware(service, middleware, insertionMode)); }
/// <summary> /// Register a resolve middleware for services providing a particular type. /// </summary> /// <param name="builder">The container builder.</param> /// <param name="serviceType">The service type.</param> /// <param name="middleware">The middleware to register.</param> /// <param name="insertionMode">The insertion mode of the middleware (start or end of phase).</param> public static void RegisterServiceMiddleware(this ContainerBuilder builder, Type serviceType, IResolveMiddleware middleware, MiddlewareInsertionMode insertionMode = MiddlewareInsertionMode.EndOfPhase) { if (builder is null) { throw new ArgumentNullException(nameof(builder)); } if (serviceType is null) { throw new ArgumentNullException(nameof(serviceType)); } if (middleware is null) { throw new ArgumentNullException(nameof(middleware)); } builder.RegisterServiceMiddlewareSource(new ServiceWithTypeMiddlewareSource(serviceType, middleware, insertionMode)); }
/// <summary> /// Initializes a new instance of the <see cref="MiddlewareDeclaration"/> class. /// </summary> /// <param name="middleware">The middleware that is encapsulated in this declaration.</param> public MiddlewareDeclaration(IResolveMiddleware middleware) { Middleware = middleware; Phase = middleware.Phase; }
/// <summary> /// Initializes a new instance of the <see cref="ServiceWithTypeMiddlewareSource"/> class. /// </summary> /// <param name="serviceType">The service type.</param> /// <param name="middleware">The middleware to add.</param> /// <param name="insertionMode">The insertion mode of the middleware.</param> public ServiceWithTypeMiddlewareSource(Type serviceType, IResolveMiddleware middleware, MiddlewareInsertionMode insertionMode) { _serviceType = serviceType ?? throw new ArgumentNullException(nameof(serviceType)); _middleware = middleware ?? throw new ArgumentNullException(nameof(middleware)); _insertionMode = insertionMode; }
/// <summary> /// Writes a diagnostic event indicating an individual middleware item has finished successfully (when the <see cref="IResolveMiddleware.Execute"/> method returns). /// </summary> /// <param name="diagnosticSource">The diagnostic source to which events will be written.</param> /// <param name="requestContext">The context for the resolve request that is running.</param> /// <param name="middleware">The middleware that just ran.</param> public static void MiddlewareSuccess(this DiagnosticListener diagnosticSource, ResolveRequestContext requestContext, IResolveMiddleware middleware) { if (diagnosticSource.IsEnabled(DiagnosticEventKeys.MiddlewareSuccess)) { diagnosticSource.Write(DiagnosticEventKeys.MiddlewareSuccess, new MiddlewareDiagnosticData(requestContext, middleware)); } }
public LogModule() { _middleware = new T(); }