我正在学习使用 Entity Framework (我仍然是 Entity Framework 和 C# 的新手),
在学习其中一个教程时,我遇到了以下代码:
public class EntityF : IEntityWithChangeTracker,IEntityWithKey
{
private IEntityChangeTracker changetracker;
public void SetChangeTracker(IEntityChangeTracker changetracker)
{
this.changetracker = changetracker;
}
}
我们可以像这样在一个类中引用另一个接口(interface)吗?:
private IEntityChangeTracker changetracker;
甚至没有实现 IEntityChangeTracker 接口(interface)中定义的方法。
在此处的示例中使用接口(interface)实例 IEntityChangeTracker 的目的可能是什么。
直到现在(在练习 C# 教程时),我一直在接口(interface)中定义一些框架方法,继承它的类需要为它们提供实现。这是一个经典的例子,但这里的代码有些不同。任何人都可以让我知道定义这样的接口(interface)的目的吗?
最佳答案
What could be the purpose of using instance of an interface IEntityChangeTracker in the example here.
当接受一个接口(interface)而不是一个具体的实现时,您正在创建两个类之间的解耦。这意味着,代码的调用者可以自由传递任何实现上述接口(interface)的对象,而不是特定的具体类型。你对调用者说 “你可以传递任何实现上述接口(interface)的对象,我只关心它声明的成员/方法”
通过这种方式,您也打开了一扇通向 Dependency Injection 的大门。并允许客户端支持 Interface Segregation Principle
关于c# - 在 C# 中创建接口(interface)的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26955003/