工厂方法和依赖项注入,一些服务无法构建



我正试图在我的应用程序中使用Factory方法,当我尝试注入它们时,它会引发异常。

public abstract class TransferFactory
{
protected abstract ITransfer MakeTransfer();
public ITransfer CreateTransfer() => MakeTransfer();
}
public class CsvTransferFactory:TransferFactory
{
private readonly CsvTransfer _csvTransfer;
public CsvTransferFactory(CsvTransfer csvTransfer)
{
_csvTransfer = csvTransfer;
}
protected override ITransfer MakeTransfer()
{
ITransfer transfer = _csvTransfer;
return transfer;
}
}
public class CsvTransfer:ITransfer
{
private readonly IProductCategoryRepository _productCategoryRepository;

public CsvTransfer(IProductCategoryRepository productCategoryRepository)
{
_productCategoryRepository = productCategoryRepository;
}
public async Task<HttpResponseMessage> ExecuteTransfer(TransferTypeEnum transferType,List<string> assetCategoryIds,List<Guid> categoryIds)
{
//removed for brevity
}
}
startup.cs
services.AddTransient<IProductCategoryRepository, ProductCategoryRepository>();
services.AddTransient<CsvTransferFactory>();

我得到以下错误:

验证服务描述符"ServiceType:app"时出错。Core.Interfaces.ITransferService生存期:瞬态实现类型:应用程序。Core.DomainServices.TransferService":无法解析服务在尝试激活"app.Core"时,类型为"app.Core.DomainServices.TransferServices.CconcreteTransfers.CsvTransfer"。DomainServices.TransferServices.CssvTransferFactory的

作为异常提示,您也需要注册CsvTransfer

services.AddTransient<IProductCategoryRepository, ProductCategoryRepository>();
services.AddTransient<CsvTransfer>();
services.AddTransient<CsvTransferFactory>();

尽管我想说,当您想要手动实例化类而不是通过DI管理它们时,更常见的方法是使用工厂方法(尽管这种方法至少有一个用例-键控依赖关系(。

最新更新