在 ReSharper 中,有 Architecture View window 和其中有传递引用的术语,但它的真正含义有点令人困惑。 This blog post从他们涵盖它,但以不完整的方式。
我开始认为此选项仅用于简化解决方案图,这是正确的吗?
如果不是,你能解释一下传递引用是什么意思吗?
最佳答案
当 ReSharper 谈到可传递引用时,它意味着对通过引用另一个中间程序集隐式创建的程序集的引用。例如,假设我有一个带有程序集“Core.dll”的项目。我创建了一个名为“Features.dll”的项目,它引用了 Core.dll。这是直接引用。
现在假设我添加了一个测试项目 Features.Tests.dll。此程序集测试 Features.dll 中的代码,因此具有对 Features.dll 的直接引用。然后引用看起来像这样:
Features.Tests.dll -(References)-> Features.dll -(References)-> Core.dll
每个 dll 直接引用它使用的 dll。但我们也可以说 Features.Tests.dll 对 Core.dll 有一个“传递引用”。 IE。:
Features.Tests.dll -(References)-> Core.dll
毕竟,如果 Core.dll 不存在,它就无法运行。
在使用 ReSharper 的架构 View 时,传递引用默认是隐藏的,一方面是为了简化图表,另一方面是因为隐含了传递引用——如果图表显示 Features.Tests.dll 引用了 Features.dll,而 Features.dll 引用了 Core。 dll,那么在视觉上很明显 Features.Tests.dll 和 Core.dll 需要并因此传递引用 Core.dll。您可以通过启用“显示传递引用”按钮使传递引用更加可见。
记住传递引用如何工作的一种方法是考虑数学,例如如果 A > B 且 B > C,则 A > C。“大于”是传递关系。
关于architecture - 什么是传递引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23687174/