在DI中调用已实现的方法是否正确?

时间:2019-12-20 17:36:12

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

我在.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";
    }

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

1 个答案:

答案 0 :(得分:2)

您做的一切正确。

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

接口仅定义实现中必须存在的方法和属性。他们没有自己的实现(...好,default interface methods除外,但这是一个完全不同的主题,您的GetData方法不是这种情况)。