我有一个模型:
public class Checkout
{
public string CheckoutId { get; set; }
public List<CheckoutItem> CheckoutItems { get; set; }
}
我正在尝试在尊重POCO的同时向对象添加方法。因此,我添加了一个仓库:
public class CheckoutRepository : ICheckoutRepository
{
private readonly AppDbContext _appDbContext;
private readonly Checkout _checkout;
public CheckoutRepository(AppDbContext appDbContext, Checkout checkout)
{
_appDbContext = appDbContext;
_checkout = checkout;
}
public void AddItem(unitItem item, int amount)
{
//Removed for brevity
}
public void ClearCheckout()
{
//Details removed for brevity
}
public Checkout GetCart(IServiceProvider serviceProvider)
{
//Details removed for brevity
}
public List<CheckoutItem> GetCheckoutItems()
{
//Details removed for brevity
}
public decimal GetCheckoutTotal()
{
//Details removed for brevity
}
public decimal RemoveItem(unitItem item)
{
//Details removed for brevity
}
并提供一个与仓库交互的接口
public interface ICheckoutRepository
{
Checkout GetCart(IServiceProvider serviceProvider);
void AddItem(unitItem item, int amount);
decimal RemoveItem(unitItem item);
List<CheckoutItem> GetCheckoutItems();
void ClearCheckout();
decimal GetCheckoutTotal();
}
当然,我将其添加到启动文件中。
services.AddTransient<ICheckoutRepository, CheckoutRepository>();
但是,当我运行应用程序时,我得到了错误:
System.AggregateException: '有些服务无法构建'
还有2个内部异常:
1:
InvalidOperationException: 验证服务描述符“ServiceType:BataCMS.Data.Interfaces.ICheckoutRepository Lifetime:Transient ImplementationType:BataCMS.Data.Repositories.CheckoutRepository”时出错:尝试激活“BataCMS.Data.Repositories.CheckoutRepository”时无法解析类型为“BataCMS.Data.Models.Checkout”的服务。
2:
InvalidOperationException: 尝试激活“BataCMS.Data.Repositories.CheckoutRepository”时无法解析类型为“BataCMS.Data.Models.Checkout”的服务。
真的需要一些关于这个问题的见解。
Checkout checkout
参数,因此你需要将其从构造函数中删除或者在 DI 容器中进行注册。 - Guru Stron