Architecture 什么是及物指称?

Architecture 什么是及物指称?,architecture,reference,resharper,Architecture,Reference,Resharper,在ReSharper中,有一个窗口,其中有传递性引用的术语,但它的真正含义有点混乱。从他们身上可以看出,这是一种不完整的方式 我开始认为这个选项仅仅是为了简化解决方案图,对吗 如果不是,您能解释传递引用的含义吗?当ReSharper谈到传递引用时,它指的是通过引用另一个中间程序集隐式生成的对程序集的引用。例如,假设我有一个带有程序集“Core.dll”的项目。我创建了一个名为“Features.dll”的项目,该项目引用Core.dll。这是一个直接的参考 现在假设我添加一个测试项目Featur

在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的architecture视图时,默认情况下隐藏可传递引用,首先是为了简化图表,但也因为可传递引用是隐含的-如果图表显示Features.Tests.dll引用Features.dll,Features.dll引用Core.dll,显然,Features.Tests.dll和Core.dll需要并因此可传递地引用Core.dll。通过启用“显示传递引用”按钮,可以使传递引用更加可见

记住传递性引用如何工作的一种方法是思考数学,例如,如果A>B和B>C,那么A>C。“大于”是一种传递关系