我很难协调 IoC、接口和事件。让我们看看我是否可以在不写书的情况下解释这一点。
我刚刚开始使用 IoC,我正在玩 Spring。我们有一个简单的数据层,它早在 EF 或其他人之前就已构建。其中一个类是具有一些方法和事件的 DBProcedure。
我创建了一个“真正的” DBProcedure 类实现的 IDBProcedure 接口。在 TDD 方式中,我希望能够将“真正的” DBProcedure 类换成另一个实现相同接口的测试类。对我来说,这意味着 IDBProcedure 接口应该定义在与我的数据层不同的命名空间/项目中,对吗?
但是 DBProcedure 可以引发一些事件,并且这些事件提供自定义 EventArgs 派生类。这是否意味着 EventArgs 类也需要在数据层之外定义?似乎它可以使界面工作,但这似乎很糟糕,因为它传播了数据层?
另一方面,也许我有错误的想法——即使我没有使用任何“真实”类,在我测试获取接口和事件定义时是否可以包含数据层命名空间?