我有三个项目
1有控制器
2与应用程序服务
3有接口
我写了界面
public interface ICheckoutAppService
{
OrderDto GetOrder();
}然后在app服务中实现它。
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());得到这个错误
'TestTaskShared.Interfaces.ICheckoutAppService‘System.InvalidOperationException:在试图激活'CheckoutAPI.Controllers.CustomersController'.时无法解析
类型的服务
我怎么才能解决这个问题?
发布于 2021-08-05 15:04:58
ICheckoutAppService和CheckoutAppService在同一个程序集中吗?
如果没有,则当前扫描只使用引用接口的项目,不会找到类。我假设类在Appservices项目中。
您需要参考该项目,以便检查人员知道在哪里查找实现。
考虑改变扫描方法
services.Scan(scan =>
scan.FromAssemblyOf<CheckoutAppService>()
.AddClasses()
.AsMatchingInterface());以上将添加来自Appservices项目的类作为它们的匹配接口。由于Appservices项目会引用interfaces项目,所以审查员将知道如何找到所需的接口。
https://stackoverflow.com/questions/68668775
复制相似问题