簡體   English   中英

在 autofac 中注冊處理程序

[英]Register handler in autofac

正在使用 Autofac 和 MediatR。 我正在嘗試在 ContainerBuilder 中注冊處理程序,但它總是錯誤

無法為服務類型 'MediatR.IRequestHandler'2[DataSourceQuery'2[TEntity,TModel],Kendo.Mvc.UI.DataSourceResult]' 實例化實現類型 'DataSourceHandler`2[TEntity,TModel]'

我的查詢:

public class DataSourceQuery<TEntity, TModel> : IRequest<DataSourceResult>
        where TEntity : class, IEntityBase
        where TModel : class
    {
        public DataSourceRequest Request { get; set; }
    }

處理程序:

public class DataSourceHandler<TEntity, TModel> : IRequestHandler<DataSourceQuery<TEntity, TModel>, DataSourceResult>
        where TEntity : class, IEntityBase
        where TModel : class
    {
        private readonly ApplicationDbContext context;

        public DataSourceHandler(ApplicationDbContext context)
        {
            this.context = context;
        }

        public DataSourceResult Handle(DataSourceQuery<TEntity, TModel> message)
        {
            return context.Set<TEntity>()
                .ProjectTo<TModel>()
                .ToDataSourceResult(message.Request);
        }
    }

我嘗試以不同的方式注冊它,例如:

builder.RegisterGeneric(typeof(DataSourceHandler<,>)).As(typeof(IRequestHandler<,>))
                .AsImplementedInterfaces();

        builder.RegisterGeneric(typeof(DataSourceHandler<,>)).As(typeof(IRequestHandler<,>))
            .InstancePerDependency();

        builder.RegisterAssemblyTypes(typeof(DataSourceHandler<,>).GetTypeInfo().Assembly)
            .AsClosedTypesOf(typeof(DataSourceHandler<,>)).AsImplementedInterfaces();

        builder.RegisterGeneric(typeof(DataSourceHandler<,>))
            .As(typeof(IRequestHandler<,>));

        builder.RegisterAssemblyTypes(typeof(DataSourceHandler<,>).GetTypeInfo().Assembly)
            .AsClosedTypesOf(typeof(IRequestHandler<,>));

但它不起作用。

我該怎么辦?

您發布的錯誤消息似乎表明DataSourceHandler<TEntity, TModel>類型已正確注冊為IRequestHandler<DataSourceQuery<TEntity, TModel>, DataSourceResult> ,因為該消息包含該類型的名稱。

不過,它似乎無法實例化。 由於這種類型的唯一依賴項是ApplicationDbContext ,您能否仔細檢查一下您是否在容器構建器中注冊了該類型?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM