提问人:aybe 提问时间:5/16/2014 最后编辑:Pangaybe 更新时间:3/2/2021 访问量:4074
什么是传递引用?
What is a transitive reference?
问:
在ReSharper中,有“架构视图”窗口,其中有传递引用的术语,但它的真正含义有点令人困惑。他们的这篇博文涵盖了它,但方式不完整。
我开始认为此选项仅用于简化解决方案图,这是正确的吗?
如果不是,你能解释一下传递引用是什么意思吗?
答:
当 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 上有一个“传递引用”。即:
Features.Tests.dll -(References)-> Core.dll
毕竟,如果 Core.dll 不存在,它就无法运行。
使用 ReSharper 的体系结构视图时,默认情况下会隐藏传递引用,首先是为了简化关系图,但也因为传递引用是隐含的 - 如果关系图显示 Features.Tests.dll 引用 Features.dll,而 Features.dll 引用 Core.dll,那么 Features.Tests.dll 和 Core.dll 需要并因此传递引用 Core.dll。您可以通过启用“显示可传递引用”按钮来使传递引用更明显。
记住传递引用如何工作的一种方法是考虑数学,例如,如果 A > B 和 B > C,那么 A > C。“大于”是一种传递关系。
评论