架构 – 什么是传递参考?

在Resharper中有一个 Architecture View窗口,其中有传递引用的术语,但它有点令人困惑,因为它的真正含义.他们的 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上有一个“传递引用”.即:

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

相关文章
相关标签/搜索