大家
目前,我有以下参照结构:
DSFinalProject有"DAL"
项目和"DataStructure"
项目的参考。
DataStructure
有DAL
项目以及参考...
现在我想的是DSFinalProject
不会有参考DAL
层,但将能够使用接口从该类。
有什么办法"tunnel"
是在DAL项目DSFinalProject实际上不使它们之间的引用的接口?
也许使用数据结构的项目?还是其他什么?
预先感谢任何帮助:)
大家
目前,我有以下参照结构:
DSFinalProject有"DAL"
项目和"DataStructure"
项目的参考。
DataStructure
有DAL
项目以及参考...
现在我想的是DSFinalProject
不会有参考DAL
层,但将能够使用接口从该类。
有什么办法"tunnel"
是在DAL项目DSFinalProject实际上不使它们之间的引用的接口?
也许使用数据结构的项目?还是其他什么?
预先感谢任何帮助:)
最简单的方法是将它们放入DataStructure
,这并不算太坏,因为引用接口的任何东西都需要引用DataStructure
。
我的投票是将它们放在那里,直到遇到场景时,您需要需要将接口放在单独的程序集中。
谢谢...我将根据您的答案重新设计我的解决方案:) –
我不知道有什么方法来引用接口(或其他任何东西)从DSFinalProject的DAL项目中,而无需到项目(或组件)的引用。
你可以将它们移动到另一个项目如果你认为它使依赖清洁 - 如果你把接口的数据结构项目 - 你会碰上它需要DAL循环引用和DAL需要它。
我不相信有反正你问有啥。如果您考虑串行化对象时发生的情况,您仍然需要使用程序集来提供字段在数据流内布局的低级结构。它需要在接口的代码说,前4个字节是双等
所以才做,这是你的接口移动到一个新的interfaces.dll可以通过一切引用。在包括EnterpriseLibrary在内的许多示例中,您会看到这种模式重复出现。
但是...... 你是一个典型的错误。你为什么要将你的代码分解成这么多项目?项目真的应该被认为是我们代码的运行时包装,而不是一个设计时间隔离机制。通过分成许多集会,你做了三件事。
看看这个例子Hints on how to optimise code看看会发生什么事情,因为你的解决方案变得更加复杂。
而不是像这样分割它,而是使用命名空间,你仍然有分离,但不必使用这么多的引用,你现在可以控制你的类中的using语句。您将很容易地看到您是否在设计为处于DSFinalProject层的类中使用DAL引用。你可以在项目下创建一个文件夹,然后添加你的类。摆脱所有的项目,仍然有一个适当的分层系统。
随着解决方案的增长,请等到您至少有两个可执行文件后再开始引入项目,然后考虑运行时间影响。如果你总是要加载两个程序集,将它们合并成一个(我见过一些开源项目,这些项目使用ilmerge在第三方库中合并)。
将接口移动到不同的项目? –
这是我的解决方案之一,但我试图找到其他方式。而不是添加对另一个项目的引用,只需使用DataStructure访问DAL接口 –
只要'DataStructure'没有引用'DAL'(它不应该)就可以工作 –