我正在学习使用实体框架(我仍然是实体框架和C#的新手),
在浏览其中一个教程时,我遇到了以下代码:
public class EntityF : IEntityWithChangeTracker,IEntityWithKey
{
private IEntityChangeTracker changetracker;
public void SetChangeTracker(IEntityChangeTracker changetracker)
{
this.changetracker = changetracker;
}
}
我们可以在这样的类中使用引用另外一个接口吗?:
private IEntityChangeTracker changetracker;
甚至没有实现 IEntityChangeTracker 界面中定义的方法。
在此示例中使用接口 IEntityChangeTracker 的实例可能是什么目的。
到目前为止(在练习C#教程时),我在界面中定义了一些骨架方法,而继承它的类需要为它们提供实现。这是一个典型的例子,但这里的代码是不同的。任何人都可以让我知道定义这样的接口的目的吗?
答案 0 :(得分:4)
在此示例中使用接口IEntityChangeTracker实例的目的是什么。
当接受接口而不是具体实现时,您将在两个类之间创建解耦。这意味着,代码的调用者可以自由地传递实现上述接口的任何对象,而不是特定的具体类型。你告诉调用者“你可以传递实现上述接口的任何对象,我只关心它声明的成员/方法”
通过这种方式,您还可以打开Dependency Injection的大门并允许客户支持Interface Segregation Principle