c# - 在 C# 中创建接口(interface)的对象

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

我正在学习使用 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/

相关文章:

c# - 将所有用户数据保存在 Forms 身份验证 cookie 中

c# - 文本操作将单个文件中的类拆分为多个文件

javascript - OPC 服务器到 MySQL 数据库

c# - 从 IL 构造方法引用集合

c# - EF 中的 SQL Server 校验和

c# - 我可以将多维数据绑定(bind)到 C# 和 .NET 中的 DataGridView 吗?

c# - Task.WhenAll() 和 foreach(var task in tasks) 有什么区别

c# - 并行不适用于 Entity Framework

c# - 如何在 EF 4.1 RC 中的 DbContext 级别关闭更改跟踪?

sql - Oracle中有没有一种方法可以使列不区分大小写?