我收到以下错误:
可以使用可用的服务和参数调用“HotelsLive.Application.CompanyService”类型中的'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'找到的构造函数:
无法解析参数'HotelsLive.Interfaces.Repositories.IRepositoryAsync 1[HotelsLive.Domain.Models.Company] repository' of constructor 'Void .ctor(HotelsLive.Interfaces.Repositories.IRepositoryAsync
1 [HotelsLive.Domain.Models.Company])'。
服务构造函数是:
public CompanyService(IRepositoryAsync<Company> repository) : base(repository) {
_companyRepository = repository;
}
Autofac注册是:
builder.RegisterType<CompanyService>()
.As<ICompanyService>()
.InstancePerRequest();
和
builder.RegisterGeneric(typeof(Repository<>))
.As(typeof(IRepositoryAsync<>))
.InstancePerRequest();
我假设我需要指定参数,但我不确定如何解决这个问题。我已经查看了comapnyservice注册中的WithParameter方法,但是还没有能够编译任何东西。
答案 0 :(得分:0)
最终到达那里。最终的配置是:
builder.RegisterType<CompanyService>()
.As<ICompanyService>()
.WithParameter(new ResolvedParameter((p, c) => p.Name == "repository", (p, c) => c.Resolve<IRepositoryAsync<Company>>()))
.InstancePerRequest();