5

我喜欢将接口和实现分开的想法。但如何分开?接口定义是否在单独的 .Net 程序集中?您是否有一个项目来定义解决方案的所有接口?否则接口的循环依赖是否存在问题?

4

4 回答 4

7

将您的域对象和接口放在单独的“域”程序集中。
此程序集不应引用核心 .net 程序集以外的任何内容。

这样你就可以从你的域/服务模型和你的实现中得到一个清晰的分离。

编辑:http:
//jeffreypalermo.com/blog/the-onion-architecture-part-1/

于 2008-09-11T19:22:14.997 回答
3

我不会仅仅为了它而将接口放入单独的程序集中。但是,如果接口参与任何形式的 IPC 或可扩展性架构,那么给它们自己的程序集通常是有意义的。

如果您有需要相互引用的项目,那么是的,您将需要一个单独的接口程序集,但您还应该仔细检查架构,看看是否有另一种解决循环依赖的方法。

于 2008-09-11T19:23:30.733 回答
1

我更喜欢将接口的最常见或最简单的实现保留在接口名称后面的子文件夹(和命名空间)中。

\项目\
\project\IAppender.cs
\项目\附加\
\project\Appender\FileAppender.cs
\project\Appender\ConsoleAppender.cs

如果我在项目之外扩展这个类。在一个特殊的项目中,类似地重复文件夹/命名空间。

\特殊项目\
\specialproject\Appender\
\specialproject\Appender\MemoryAppender.cs
于 2008-09-11T19:27:31.707 回答
0

在我现在正在进行的项目中,接口和相关的基类进入在逻辑上划分为函数的程序集。这些提供程序和类的实现进入核心程序集。我们的想法是使用我们的 API 的人可以以清晰和合乎逻辑的方式引用更多或一个 API dll。

较小的应用程序不需要这种分离。但是,无论我将接口保存在哪里,我都会将它们保存在与任何基类相同的命名空间中。

于 2008-09-11T19:38:54.143 回答