コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <inheritdoc/>
        public void AddServiceMiddleware(Service service, IResolveMiddleware middleware, MiddlewareInsertionMode insertionMode = MiddlewareInsertionMode.EndOfPhase)
        {
            var info = GetServiceInfo(service);

            info.UseServiceMiddleware(middleware, insertionMode);
        }
コード例 #4
0
 /// <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;
 }
コード例 #5
0
 /// <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);
 }
コード例 #6
0
        /// <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));
        }
コード例 #7
0
        /// <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));
        }
コード例 #8
0
 /// <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;
 }
コード例 #9
0
 /// <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;
 }
コード例 #10
0
 /// <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));
     }
 }
コード例 #11
0
 public LogModule()
 {
     _middleware = new T();
 }