在C#中创建接口的对象

时间:2014-11-16 07:58:11

标签: c# .net entity-framework entity-framework-4

我正在学习使用实体框架(我仍然是实体框架和C#的新手),

在浏览其中一个教程时,我遇到了以下代码:

 public class EntityF : IEntityWithChangeTracker,IEntityWithKey
    {
        private IEntityChangeTracker changetracker;

        public void SetChangeTracker(IEntityChangeTracker changetracker)
        {
            this.changetracker = changetracker;
        } 
    }

我们可以在这样的类中使用引用另外一个接口吗?:

 private IEntityChangeTracker changetracker;

甚至没有实现 IEntityChangeTracker 界面中定义的方法。

在此示例中使用接口 IEntityChangeTracker 的实例可能是什么目的。

到目前为止(在练习C#教程时),我在界面中定义了一些骨架方法,而继承它的类需要为它们提供实现。这是一个典型的例子,但这里的代码是不同的。任何人都可以让我知道定义这样的接口的目的吗?

1 个答案:

答案 0 :(得分:4)

  

在此示例中使用接口IEntityChangeTracker实例的目的是什么。

当接受接口而不是具体实现时,您将在两个类之间创建解耦。这意味着,代码的调用者可以自由地传递实现上述接口的任何对象,而不是特定的具体类型。你告诉调用者“你可以传递实现上述接口的任何对象,我只关心它声明的成员/方法

通过这种方式,您还可以打开Dependency Injection的大门并允许客户支持Interface Segregation Principle