在.NET框架中遇到自递归程序集引用

Cum*_*yah 5 .net reflection assemblies circular-dependency circular-reference

我正在编写一些C#代码,递归地遍历基本程序集的引用程序集,构建这些引用的有向非循环图以进行拓扑排序.我是通过Assembly类上的GetReferencedAssemblies()方法完成的.

在测试代​​码时,我发现 - 令我惊讶的是 - .NET框架中的某些程序集显然将自己列为程序集引用.一个这样的例子是System.Transactions,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089,它列出了System.Transactions,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089作为参考,可以在Reflector中验证.

一旦我意识到这一点,通过比较AssemblyNames打破无限递归是微不足道的,但我很好奇这种情况,因为我自己无法生成自递归程序集.(我可以谷歌没有关于此的信息,并添加自己作为参考不会使得到的程序集自我递归.)

简而言之:自我递归汇编引用真的是"犹太教" - 一些系统程序集引用自身的理由是什么?

谢谢.

adr*_*nks 3

昨天有人问了一个题为“ Microsoft 如何创建具有循环引用的程序集?”的问题。这可能会更多地解释这是如何完成的。不过,我想不出程序集引用自身的有效理由。