什么是传递参考?

时间:2014-05-15 19:36:36

标签: architecture reference resharper

在Resharper中有Architecture View窗口,其中有传递引用的术语,但它实际上意味着什么有点令人困惑。来自他们的This blog post涵盖了它,但方式不完整。

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

如果没有,你能解释 transitive reference 的含义吗?

1 个答案:

答案 0 :(得分:23)

当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.“大于”是一种传递关系。