首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scrutor注册依赖项

使用Scrutor注册依赖项
EN

Stack Overflow用户
提问于 2021-08-05 14:44:03
回答 1查看 223关注 0票数 0

我有三个项目

1有控制器

2与应用程序服务

3有接口

我写了界面

代码语言:javascript
复制
public interface ICheckoutAppService
{
    OrderDto GetOrder();
}

然后在app服务中实现它。

代码语言:javascript
复制
 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;
    }

然后我从控制器在第一个项目中调用它,如下所示

代码语言:javascript
复制
[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注册接口,如下所示

代码语言:javascript
复制
services.Scan(scan =>
            scan.FromAssemblyOf<ICheckoutAppService>()
                .AddClasses()
                .AsMatchingInterface());

得到这个错误

'TestTaskShared.Interfaces.ICheckoutAppService‘System.InvalidOperationException:在试图激活'CheckoutAPI.Controllers.CustomersController'.时无法解析

类型的服务

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2021-08-05 15:04:58

ICheckoutAppServiceCheckoutAppService在同一个程序集中吗?

如果没有,则当前扫描只使用引用接口的项目,不会找到类。我假设类在Appservices项目中。

您需要参考该项目,以便检查人员知道在哪里查找实现。

考虑改变扫描方法

代码语言:javascript
复制
services.Scan(scan =>
        scan.FromAssemblyOf<CheckoutAppService>()
            .AddClasses()
            .AsMatchingInterface());

以上将添加来自Appservices项目的类作为它们的匹配接口。由于Appservices项目会引用interfaces项目,所以审查员将知道如何找到所需的接口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68668775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档