在visual studio解决方案中放置接口

时间:2010-02-19 10:45:28

标签: visual-studio interface

关于接口类型的放置,最佳做法是什么。

通常,最简单,最容易的事情是将接口放在与其具体实例相同的项目中 - 但是,如果我理解正确,这意味着您更有可能最终遇到项目依赖性问题。这是对情况的公平评估,如果是这样,那么接口应该分成不同的项目吗?

3 个答案:

答案 0 :(得分:2)

这取决于你想做什么。将接口和类放在同一个程序集中会在某种程度上限制所述接口抽象的有用性,这是正确的。例如。如果要在AppDomain中加载类型以便再次卸载它们,通常可以通过接口访问实例。但是,如果接口和类在同一个程序集中,则无法在不加载类的情况下加载接口。

同样,如果您稍后想要为一个或多个接口提供不同的类集,如果它们与接口在同一个程序集中,您仍将获得所有旧类型。

有了这个说我必须承认我会不时地在同一个程序集中放置接口和类,因为我不认为我需要灵活性,所以我更喜欢保持简单。只要您可以选择重建所有内容,您可以在需要时重新安排接口。

答案 1 :(得分:1)

在一个简单的解决方案中,我可能在同一个项目中拥有公共接口和公共工厂类以及内部实现类。

在一个更复杂的解决方案中,那么为了避免项目A依赖于项目B中的接口,而项目B依赖于项目A中定义的接口,我可能会将接口移动到一个单独的项目中,该项目本身依赖于没有,所有其他项目都可以依赖。

我实践“不能从头开始创建大型系统:大型系统的工作是不变的,发现它们是从有效的小型系统发展而来的。”所以我很可能从一个小而简单的解决方案开始,其中的接口与实现在同一个项目中,然后(如果发现有必要)重构将接口移动到单独的程序集中。

然后又有包装;您可以开发单独的项目,并在装运时将所有内容重新打包到一个装配中。

答案 2 :(得分:1)

这是一个部署细节。在某些情况下, 将接口类型放在自己的程序集中。当然在插件开发中使用它们或在多个AppDomain中运行的任何其他类型的代码时。几乎可以肯定是Remoting或任何其他类型的连接架构。

除此之外,它不再那么重要了。接口类型就像另一个类一样,如果在另一个项目中需要它,可以添加一个程序集引用。将它们分开可以帮助控制版本控制。如果接口类型的更改可能导致实现它们的类中的广泛更改,则最好将它们分开。现在更改[AssemblyVersion]的行为有助于解决忘记更新客户端程序集的部署问题。