什么是传递参考?

Ayb*_*ybe 12 architecture resharper reference

在Resharper中有一个Architecture View窗口,其中有一个传递引用的术语,但它有点令人困惑,因为它的真正含义.他们的博客文章以不完整的方式介绍了它.

我开始认为这个选项仅用于简化解决方案图,这是正确的吗?

如果没有,你能解释一下传递性参考意味着什么吗?

cit*_*att 27

当ReSharper谈到传递引用时,它意味着对通过引用另一个中间程序集隐式地进行的程序集的引用.例如,假设我有一个带有程序集"Core.dll"的项目.我创建了一个名为"Features.dll"的项目,它引用了Core.dll.这是一个直接的参考.

现在说我添加了一个测试项目,Features.Tests.dll.此程序集测试Features.dll中的代码,因此直接引用Features.dll.然后引用看起来像这样:

Features.Tests.dll -(References)-> Features.dll -(References)-> Core.dll
Run Code Online (Sandbox Code Playgroud)

每个dll直接引用它使用的dll.但我们也可以说Features.Tests.dll在Core.dll上有一个"传递引用".即:

Features.Tests.dll -(References)-> Core.dll
Run Code Online (Sandbox Code Playgroud)

毕竟,如果Core.dll不存在,它将无法运行.

当使用ReSharper的建筑观,传递引用默认是隐藏的,首先简化图,但也因为传递引用暗示 - 如果图显示Features.Tests.dll引用Features.dll和Features.dll引用核心. dll,然后在视觉上很明显,Features.Tests.dll和Core.dll需要,因此传递引用Core.dll.通过启用"显示传递引用"按钮,可以使传递引用更加可见.

记住传递参考如何工作的一种方法是考虑数学,例如如果A> B和B> C,则A> C."大于"是传递关系.