我的 .net 解决方案中有三个项目。
主项目和两个类库项目。
我发现我需要交叉引用类库项目。
我可以这样做吗?是安全的还是有一些考虑?
我的 .net 解决方案中有三个项目。
主项目和两个类库项目。
我发现我需要交叉引用类库项目。
我可以这样做吗?是安全的还是有一些考虑?
当项目在一个解决方案中时,IDE 不会让您这样做。有一些微妙的方法可以混淆它。但是由于程序集引用尚不可用,因此无法从头开始构建解决方案(即 Build + Rebuild)。重构这个,你可能想要一个两者都可以引用的第三个程序集。
循环引用是可能的(通过命令行和一些技巧;不是通过 IDE),但很痛苦;不要这样做!
要么为常用类型添加额外的程序集,要么合并两个库。
在许多方面,越少越简单……无数的 dll 并不意味着你已经达到了纯度——它只是一团糟。
当我遇到这个问题时,我创建了只有属性的类。可以是Employee
, Customer
, Product
, 随便什么。这些类不需要引用任何其他项目,因此多个项目可以引用它们。
属于这些对象的方法 ( Employee
, Customer
, Product
) 然后进入其他项目中它们自己的类。
我经常遇到这种情况的一种情况是在三层应用程序中——表示层、业务层和数据访问层。我希望 DAL 检索数据并填充返回给 BLL 的 Employee 对象。如果 Employee 类在 BLL 中并且同时具有属性和方法,那么就没有简单的方法来填充 DAL 中的 Employee 对象并将其返回给 BLL——因为 BLL 必须具有对 DAL 的引用,所以DAL 不能反过来引用 BLL。使用仅属性类 ( Employee
, Customer
, Product
) 创建单独的项目是解决此问题的一种方法。
如果通过“交叉引用”,您的意思是您想要执行以下操作:
1) 项目MAIN包含对LIBRARY-ALPHA和LIBRARY-BETA的引用
2) 项目LIBRARY-ALPHA包含对LIBRARY-BETA的引用
3) Project LIBRARY-BETA包含对LIBRARY-ALPHA的引用
那就不要。Visual Studio 在构建ALPHA和BETA之前将无法构建MAIN。在构建BETA之前,它将无法构建ALPHA。在构建ALPHA之前,它将无法构建BETA。因此,它将无法构建任何东西。