【问题标题】:Is it right to call implemented method in DI?在 DI 中调用已实现的方法是否正确?
【发布时间】:2019-12-20 17:36:12
【问题描述】:

我在 .net 核心中实现了依赖注入,并从接口中提到了调用,如下代码所述。

控制器

    private readonly ILogger<HomeController> _logger;
    private readonly IManageUsers  _IManageUsers;

    public HomeController(ILogger<HomeController> logger, IManageUsers manageUsers)
    {
        _logger = logger;
        _IManageUsers = manageUsers;
    }

    public IActionResult Index()
    {
       string data =  _IManageUsers.GetData();
        return View();
    }

接口声明代码

    public interface IManageUsers
    {
        string GetData();
    }

实现方法代码

    public string GetData()
    {
        return "DI implemented successfully";
    }

当我从控制器调试代码时,称为声明的时候提到的不是接口方法。我做错了什么?

【问题讨论】:

    标签: .net dependency-injection .net-core


    【解决方案1】:

    你做的一切都是正确的。

    当您的HomeController 被调用时,实现IManageUsers 的对象的一个​​实例被传递到构造函数中。当您在该实例上调用 GetData 时,将调用实现中的方法。

    接口只是定义实现中必须存在的方法和属性。他们没有自己的实现(......好吧,除了default interface methods,但这是一个完全不同的主题,您的GetData方法并非如此)。

    【讨论】:

    • 如果你能提供一个示例代码,那就太好了,因为我尝试了很多但没有调用接口方法
    • 抱歉,不确定您要问什么。正如我所说,你做的一切都是正确的。当您调用接口上的方法时,它会调用实现上的方法。这就是接口的工作方式,通过接口的设计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多