我有3个项目
1 带控制器
2 应用服务
3 带接口
我写了界面
public interface ICheckoutAppService
{
OrderDto GetOrder();
}
然后在应用服务中实现
public class CheckoutAppService : ICheckoutAppService
{
public OrderDto GetOrder()
{
var checkout = new OrderDto
{
Amount = 50,
ServiceType = "ecom",
BillRefNo = "BIZ-TEST-PR05004",
CurrencyCode = "SGD",
Payee = "{{payee_payeeliquid}}",
OrderId = "Order_11121314",
OrderItems = new List<OrderItemDto>
{
new()
{
ItemName = "Dell Laptop",
ItemNumber = "1",
ItemUnitPrice = 1000,
OrderQuantity = 1
},
new()
{
ItemName = "Dell Monitor",
ItemNumber = "1",
ItemUnitPrice = 500,
OrderQuantity = 1
}
}
};
return checkout;
}
然后我在第一个项目中从控制器调用它,就像这样
[Route("api/[controller]")]
public class CustomersController : Controller
{
private readonly ICheckoutAppService _checkoutAppService;
public CustomersController(ICheckoutAppService checkoutAppService)
{
_checkoutAppService = checkoutAppService;
}
[HttpGet]
public OrderDto Get()
{
try
{
return _checkoutAppService.GetOrder();
}
catch (Exception ex)
{
throw ex;
}
}
}
我像这样通过 Scrutor 在启动时注册接口
services.Scan(scan =>
scan.FromAssemblyOf<ICheckoutAppService>()
.AddClasses()
.AsMatchingInterface());
并得到这个错误
System.InvalidOperationException:尝试激活“CheckoutAPI.Controllers.CustomersController”时无法解析“TestTaskShared.Interfaces.ICheckoutAppService”类型的服务。
我该如何解决这个问题?