architecture - 什么是传递引用?

标签 architecture reference resharper

在 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/

相关文章:

android - Android 开发的架构模式

c# - Resharper 一直提示命名空间与文件位置不对应,即使它确实如此

windows-8 - 转到声明在 win8 64 位上的 vs2005/2008/2010/2012 上的 resharper 中不起作用?

php - 实现原始网站架构时需要考虑的事项

architecture - 如何估计支持 X 个用户/交易所需的硬件?

database - 架构/结构模型和数据库 - Laravel 应用程序

visual-studio - 快速观看的 Visual Studio 键盘快捷键 (shift + F9) 不起作用

c++ - 为什么非 const 方法隐藏 const 重载?

java - 使用字符串引用原始文件夹中的文件

c# - WCF 能否通过网络保持引用相等性?