【发布时间】:2020-11-19 04:15:40
【问题描述】:
我有一个模型:
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 生命周期:瞬态实现类型: BataCMS.Data.Repositories.CheckoutRepository':无法解析 尝试使用“BataCMS.Data.Models.Checkout”类型的服务 激活“BataCMS.Data.Repositories.CheckoutRepository”。
还有 2:
InvalidOperationException:无法解析服务类型 尝试激活时出现“BataCMS.Data.Models.Checkout” 'BataCMS.Data.Repositories.CheckoutRepository'
真的可以对这个问题有所了解。
【问题讨论】:
-
你在构造函数中传递了
Checkout checkout,所以你需要从那里删除它或者在DI容器中注册它。
标签: c# asp.net-core asp.net-core-mvc