C# c在控制器构造函数中使用接口和类有什么用途

C# c在控制器构造函数中使用接口和类有什么用途,c#,C#,在我的一次采访中,我面临这样一个问题:为什么要使用下面提到的界面 接口 回购信用证 家政人员 请帮助我为什么在HomeController的构造函数中使用Irepo。它的用途是什么?使用接口的简单示例,希望能解释一下: 接口 接口实现 用法 如果声明IAnimal类型的变量,则可以存储实现接口的任何类型。如果你现在不知道你得到的是哪种类型的动物,这会很有用,因为在这个例子中,你只想知道动物是否有毛皮。在这种情况下,一个原因是提高了可测试性。稍后,当您为家庭控制器编写单元测试时,您不希望在家庭控制

在我的一次采访中,我面临这样一个问题:为什么要使用下面提到的界面

接口

回购信用证

家政人员


请帮助我为什么在HomeController的构造函数中使用Irepo。它的用途是什么?

使用接口的简单示例,希望能解释一下:

接口

接口实现

用法


如果声明IAnimal类型的变量,则可以存储实现接口的任何类型。如果你现在不知道你得到的是哪种类型的动物,这会很有用,因为在这个例子中,你只想知道动物是否有毛皮。

在这种情况下,一个原因是提高了可测试性。稍后,当您为家庭控制器编写单元测试时,您不希望在家庭控制器内使用实际的Repo对象。因为在执行单元测试时,您不想读/写实际的数据库。接口IRepo将允许您注入实际回购的虚假或模拟

你为什么能帮我?我想这是因为不清楚你要什么。我们说不出你为什么要这样使用你的界面。请看一下问题的答案。同样,你的代码中缺少格式和大量的打字错误,因此这几乎是不可理解的,因为你可以_Iobjrepo=new AnotherRepo,而不破坏依赖它的现有代码,原因之一。
Interface Irepo{
    void add(int a, int b);
}
Public Class Repo:Irepo{
    public  void add(int a, int b){
}
Public Clas HomeController:ApiController{

    Private readonly Irepo _Iobjrepo;
    public HomeController(){
        _Iobjrepo =new Repo();
    }
}
interface IAnimal
{
    bool HasFur;
}
class Cat : IAnimal
{
    public bool HasFur => true;

    public Cat()
    {
    }
}

class Fish : IAnimal
{
    public bool HasFur => false;

    public FIsh()
    {
    }
}
IAnimal anyTypeOfAnimal = new Cat();
IAnimal anotherAnimal = new Fish();

public void TestInterface(IAnimal obj)
{
     Console.Log(obj.HasFur);
}

TestInterface(anyTypeOfAnimal.HasFur); //True
TestInterface(anotherAnimal.HasFur); //False