如何获得程序集的根名称空间?

时间:2020-03-06 14:23:15  来源:igfitidea点击:

给定一个" System.Reflection.Assembly"实例。

解决方案

不可能。什么都没有指定"根"命名空间。选项中的默认名称空间是Visual Studio内容,而不是.net内容

给定程序集中可以有任意数量的名称空间,并且不需要所有名称空间都从公共根开始。最好的办法是反映程序集中的所有类型,并建立其中包含的唯一名称空间的列表。

程序集不一定具有根名称空间。命名空间和程序集是正交的。

我们可能正在寻找的是在该Assembly中找到一个类型,然后找出其命名空间是什么。

我们应该能够通过使用GetExportedTypes()成员,然后从返回的Type句柄之一使用Namespace属性来完成此操作。

同样,不能保证所有类型都在相同的名称空间(甚至在相同的名称空间层次结构中)。

获取类型为我们提供了在程序集中定义的Type对象的列表。该对象具有名称空间属性。请记住,程序集可以具有多个名称空间。

命名空间与程序集无关,名称空间和程序集中的类之间的任何映射纯粹是由于命名约定(或者巧合)。