Dependency injection 如何向Autofac注册通用服务?
我有一个通用服务: 公共类FileDataService:IFileDataService { 公共异步任务GetListResultAsync(IFileSearcher搜索器) { return wait searcher.GetResultsAsync(); } } 我正在尝试注册: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
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));
不会接受它
您要做的是使用AutofacRegisterGeneric
方法将FileDataService
注册为通用组件;这无法通过程序集扫描机制完成
builder.RegisterGeneric(typeof(FileDataService)).As(typeof(IFileDataService));
文档:要回答此问题,您必须提供更多信息,例如异常和完整的异常详细信息。太棒了,这就是我缺少的。谢谢!