5

我正在编写一些 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 来打破无限递归是微不足道的,但我对这种情况很好奇,因为我自己无法生成自递归程序集。(我可以在谷歌上找不到任何信息,并且将自己添加为参考不会使生成的程序集自递归。)

简而言之:自递归程序集引用真的“洁净”吗?一些系统程序集引用自己的理由是什么?

谢谢。

4

1 回答 1

3

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

于 2009-08-23T14:14:10.003 回答