Dependency injection 如何向Autofac注册通用服务?

Dependency injection 如何向Autofac注册通用服务?,dependency-injection,autofac,mediatr,generic-type-argument,.net-4.7.2,Dependency Injection,Autofac,Mediatr,Generic Type Argument,.net 4.7.2,我有一个通用服务: 公共类FileDataService:IFileDataService { 公共异步任务GetListResultAsync(IFileSearcher搜索器) { return wait searcher.GetResultsAsync(); } } 我正在尝试注册: builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblyTypes()) .AsClosedTypesOf(typeof(IFile

我有一个通用服务:

公共类FileDataService:IFileDataService { 公共异步任务GetListResultAsync(IFileSearcher搜索器) { return wait searcher.GetResultsAsync(); } } 我正在尝试注册:

builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblyTypes())
.AsClosedTypesOf(typeof(IFileDataService));
builder.RegisterType().As();
AddMediatR(this.GetType().Assembly);
Register(c=>UmbracoContext.Current.AsSelf();
MediatR
处理程序中的依赖项注入中使用它

public类QueryHandler:IRequestHandler
{
私有只读IFileDataService _fileDataService;
私有只读ISampleService\u示例服务;
私有只读UmbracoHelper\u umbHelper;
公众询问者(
IFileDataService文件数据服务,ISampleService示例服务)
{
_fileDataService=fileDataService;
_sampleService=sampleService;
_umbHelper=新的UmbracoHelper(UmbracoContext.Current);
}
它告诉我处理程序没有正确构造:

为MediatR.IRequestHandler类型的请求构造处理程序时出错


如何使用
Autofac
&
MediatR
在.NET 4.7.2中正确注册和使用泛型服务?

我认为您的问题是因为
FileDataService
不是一个封闭类型,所以
是一个封闭类型(typeof(IFileDataService));
不会接受它

您要做的是使用Autofac
RegisterGeneric
方法将
FileDataService
注册为通用组件;这无法通过程序集扫描机制完成

builder.RegisterGeneric(typeof(FileDataService)).As(typeof(IFileDataService));

文档:

要回答此问题,您必须提供更多信息,例如异常和完整的异常详细信息。太棒了,这就是我缺少的。谢谢!