接口与类的实例

时间:2016-03-02 13:50:15

标签: c# interface

我的应用程序有一个BusinessLogic层,它调用DatabaseAccessLayer,它包含一个CRUD操作的静态类。它打开与我的数据库的连接,执行更新然后返回(它不会单独存储任何内容)。

当我的端点需要控制其写入的数据库(TEST1,TEST2,DEV等)时,问题就出现了。我需要将连接字符串传递给静态类。

我很难理解为什么接口比使用类的直接实例更好,反之亦然,或者确实如果有另一个首选方法(我读了一篇关于使用委托的帖子,但这对我来说似乎很老套)。

我尝试编写接口,在DatabaseAccessLayer中实现它,但是如何从业务逻辑层调用它?我不在乎BL点上DAL中的代码是什么,我只是想让它调用该代码。但似乎如果我实现它,我必须实现所有方法(那里有什么代码!)。我知道你不能声明接口的实例并调用方法。

有人可以提出建议吗?使用类的实例是否足够?

1 个答案:

答案 0 :(得分:1)

我认为你混合了两个相当不同的东西,即接口和类的实例。

用非常简单的话说:

  • 界面就像合约 - 所有类别 实施它必须实施其方法
  • 一个例子就像...... 实例 - 即 对象 制作 根据 蓝图

关于你的各种连接的问题,现在,这是另一个,我相信无关紧要的问题。您的课程静态,好的,这意味着可能无法创建实例。您可以通过调用其方法直接使用它。您始终可以将连接字符串作为参数传递给其任何方法。事实上,这就是我建议你解决问题的方法:

将连接字符串作为参数传递给其任何方法

编辑:现在我再次看到你的问题......你可能遇到静态类成员字段的问题,如果你有连接字符串作为静态类的字段!请注意,静态类的字段是 shared ,这意味着,如果使用该类更改了任何端点,则会针对将使用该类的所有其他端点更改它们。所以,这可能会给你带来麻烦...

在那种情况下......再次...... 将连接字符串作为参数传递给其任何方法

Edit2:不,我建议您将conn String作为参数传递给数据层,这是错误的!数据层应该封装连接字符串(作为内部参数)。消费者不应该知道数据的方向 - 无论是DEV还是PROD。