我有一个很艰难的时期调和的IoC,接口和事件。让我们来看看,如果我能解释这一点没有写一本书。

我刚开始接触国际奥委会和我与春天玩。我们有一个建长EF或在别人面前一个简单的数据层。其中一个类的是具有一些方法和事件DBProcedure。

我创建了一个IDBProcedure界面“真正的” DBProcedure类实现。在TDD方式我希望能够换出“真实” DBProcedure类另一个实现测试相同的接口。对我来说,这意味着IDBProcedure接口应该在不同的命名空间/项目中defind比我的数据层,对吧?

但是DBProcedure可以提高某些事件和这些事件提供定制EventArgs的派生类。这是否意味着,EventArgs的类需要在数据层外面太定义?好像它使界面的工作,但似乎不好,因为它传播各地数据layerness?

在另一方面也许我有错误的想法 - 是否确定包括当我测试得到,即使我没有使用任何“真正的”类的接口和事件定义的数据层命名空间“? / p>

有帮助吗?

解决方案

是的,你需要移动它取决于地方的接口和所有类型的,因为你的的希望接口模块依赖于实现。

这种情况的典型的选择是两个备选方案的一个

Impl ----> Api <---- client

(实施取决于API,客户端取决于API,一切都在API模块)

Impl ----> Api <----- client
\           |          /
 \          V         /
  ------->Model<------

下面的大家取决于一个共同的“模型”模块上,这包含了枚举和这样。这个版本的好处是,你可以有多个API模块共享相同的公共枚举等文物。 (因为你真的不想API的依赖于其它的API模块通常)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top