4

我的 .net 解决方案中有三个项目。
主项目和两个类库项目。

我发现我需要交叉引用类库项目。
我可以这样做吗?是安全的还是有一些考虑?

4

4 回答 4

4

当项目在一个解决方案中时,IDE 不会让您这样做。有一些微妙的方法可以混淆它。但是由于程序集引用尚不可用,因此无法从头开始构建解决方案(即 Build + Rebuild)。重构这个,你可能想要一个两者都可以引用的第三个程序集。

于 2011-01-03T16:54:50.813 回答
3

循环引用是可能的(通过命令行和一些技巧;不是通过 IDE),但很痛苦;不要这样做!

要么为常用类型添加额外的程序集,要么合并两个库。

在许多方面,越少越简单……无数的 dll 并不意味着你已经达到了纯度——它只是一团糟。

于 2011-01-03T16:57:54.067 回答
2

当我遇到这个问题时,我创建了只有属性的类。可以是Employee, Customer, Product, 随便什么。这些类不需要引用任何其他项目,因此多个项目可以引用它们。

属于这些对象的方法 ( Employee, Customer, Product) 然后进入其他项目中它们自己的类。

我经常遇到这种情况的一种情况是在三层应用程序中——表示层、业务层和数据访问层。我希望 DAL 检索数据并填充返回给 BLL 的 Employee 对象。如果 Employee 类在 BLL 中并且同时具有属性和方法,那么就没有简单的方法来填充 DAL 中的 Employee 对象并将其返回给 BLL——因为 BLL 必须具有对 DAL 的引用,所以DAL 不能反过来引用 BLL。使用仅属性类 ( Employee, Customer, Product) 创建单独的项目是解决此问题的一种方法。

于 2011-01-03T16:54:45.280 回答
1

如果通过“交叉引用”,您的意思是您想要执行以下操作:

1) 项目MAIN包含对LIBRARY-ALPHALIBRARY-BETA的引用

2) 项目LIBRARY-ALPHA包含对LIBRARY-BETA的引用

3) Project LIBRARY-BETA包含对LIBRARY-ALPHA的引用

那就不要。Visual Studio 在构建ALPHABETA之前将无法构建MAIN在构建BETA之前,它将无法构建ALPHA在构建ALPHA之前,它将无法构建BETA。因此,它将无法构建任何东西。

于 2011-01-03T16:56:39.040 回答