接口应该与其实现位于不同的项目中吗?

时间:2009-10-28 12:32:57

标签: visual-studio interface projects-and-solutions

我的问题不是关于界面的使用,而是更多的项目组织性质。

注意:我在多层应用程序中使用VisualStudio。

我的接口文件是否应该与其实现位于一个单独的项目中?我最初的想法是将所有服务接口分离到他们自己的项目(以及我的初始项目)是有用的实现)以便在必要时可以删除实现/具体项目并替换为新项目。

通过示例澄清:假设我有一个名为IBusinessService的业务层接口,它位于MyApp.Business.Services名称空间中。我的实现FooBusinessService将存在于同一名称空间中,但是VisualStudio中的不同项目。如果稍后需要重新编写实现,开发人员可以删除对FooService.proj的引用,并将其替换为对BarService.proj的引用。

这似乎可以通过允许您仅使用接口引用项目而无需获取具体实现(可能已过时或对您没用)来整合应用程序解决方案,但我是否遗漏了某些内容?

1 个答案:

答案 0 :(得分:11)

我和你在一起。我更喜欢将我的接口放在一个单独的项目和不同的命名空间中。典型的例子是数据访问类。您希望能够编写MSSQL版本和MySQL版本,两者都实现相同的接口。因此,我更喜欢接口定义在一个单独的程序集/项目中。以下是我如何布置程序集和命名空间的示例:

  • Elder.DataAccess.Core - 包含接口和常用实用程序
  • Elder.DataAccess.MSSQL - 接口的特定MSSQL实现
  • Elder.DataAccess.MySQL - 接口的特定MySQL实现

这允许我修改实现而不触及包含接口定义的项目。这也有助于我进行版本控制和更改跟踪。可能还有其他方法可以让这只猫受到伤害,所以我很想看到别人的答案。