获取已加载程序集的根命名空间(程序集命名空间)

3
我正在使用GetTypeInfo()方法从程序集中获取类的TypeInfo。通过这种方式,我试图获取该程序集的根名称空间(或者称为程序集命名空间)。但是我找不到其中给出该命名空间的属性。有一个AssemblyQualifiedName属性,它是一个包含根名称空间的字符串,但其中还有很多其他信息,如版本号等。
在.NET Core中,如何获取程序集的根名称空间?

为什么不能使用AssemblyQualifiedName? - Crowcoder
@Crowcoder 那里有太多信息,例如文化信息、程序集版本、公钥等。我需要创建一个正则表达式来提取它们。我相信那里有一个属性可以获取实际名称。只是我似乎找不到它。 - Vivendi
看起来 TypeInfo 有一个 Namespace 属性。 - Crowcoder
2个回答

3

程序集本身没有命名空间,只有程序集中的类型才有。你可能想到的是“程序集名称”,通常与“默认命名空间”相同,大多数程序集中的类型都会使用该名称。

Assembly assembly = //..
string name = assembly.GetName().Name;
GetName() 返回一个 AssemblyName 对象,该对象包含用于构建 AssemblyQualifiedName 的各个部分。此函数在 .Net Standard 1.0 可用,因此可在所有版本的 .NET Core 上使用

有没有一种方法可以根据命名空间获取所有可能的程序集? - B''H Bi'ezras -- Boruch Hashem

0

由于程序集可能有多个命名空间,因此您只能尝试获取所有类型的命名空间:

.GetTypeInfo().Assembly.GetTypes().Select(t => t.Namespace).Distinct();


嗨,根据命名空间,我该如何获取所有的程序集? - B''H Bi'ezras -- Boruch Hashem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接