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

标签 .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 来打破无限递归是微不足道的,但我对这种情况很好奇,因为我自己无法生成自递归程序集。 (我无法在 Google 上搜索任何相关信息,并且将自己添加为引用不会使生成的程序集自递归。)

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

谢谢。

最佳答案

昨天问了一个题为How did Microsoft create assemblies that have circular references?的问题这可能会更多地解释这是如何完成的。不过,我想不出一个程序集对自身进行引用的正当理由。

关于.net - 在 .NET 框架中遇到自递归程序集引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318632/

相关文章:

c# - 在 C# 中使用 Enum 表示数据层对象的 'status'

c# - 通过泛型方法实例化接口(interface)基类

c# - 将属性序列化为元素中的 Xml 属性

c# - 在 .NET Core 中使用反射

Python:如何从变量中获取信息

java - 以 InputStream 格式将文本文件从 .Net http 客户端上传到 Java REST API

python - 使用 setattr 添加的属性未显示在 help() 中

visual-studio-2010 - 在项目模板中使用本地 IWizard 程序集作为 WizardExtension

c# - 在 SQL Server 2014 中为不安全的程序集创建非对称 key

assemblies - 使用框架4.0时,为什么我无法在System.Configuration DLL上加载文件或程序集错误?