在哪里声明接口?

时间:2009-05-19 13:44:36

标签: c# .net

我正在开发一个包含不同组件的项目(想象一下打印机模块,成像模块等)。在这个项目中,所有接口都在一个Interfaces-assembly中声明(想象一下Interfaces.dll带有接口IPrinterModule,IImagingModule等)。

因为我是一名牛仔编码员;)我不得不向SO社区询问这是否是最佳实践或如何以更好的方式完成?

3 个答案:

答案 0 :(得分:6)

这对我来说听起来不错 - 有一个单独的接口程序集非常常见,特别是对于那些执行大量插件的系统。

很可能您正在使用这些接口在正交组件之间创建松散耦合的桥(顺便说一下,这对您有好处)。以真正模块化的方式执行此操作的唯一方法是为这些接口设置单独的程序集,以便实现接口或引用它的每个类型实际上使用相同的接口类型。真正唯一的另一种选择是将整个系统中的所有内容编译成一个程序集。

答案 1 :(得分:4)

我们采用了类似的方法。您肯定希望将接口与其(当前)实现分开,因此将来很容易提供不同的实现。 Martin Fowler将此描述为Separated Interfaces模式。

如果接口彼此依赖(IPrinter是否返回IImageXXX?)那么你真的需要它们在同一个程序集中以避免循环构建依赖。

答案 2 :(得分:1)

如果有循环引用,那么将所有接口保持在单独的程序集中将对您有所帮助。在研究工作流程的过程中,我在过去几天阅读了许多代码示例(来自microsoft,codeproject和其他站点),接口在实现它的程序集中声明。

类似IPrinterModule将在实现

的程序集中声明