您已经看到“从程序集获取名称空间”-但是您怎么知道名称空间在哪个程序集中?我正在尝试获取所有类型的名称空间,并且要做这些,我需要了解程序集,但是该程序集并不总是只有Assembly.GetExecutingAssembly,我需要获取其中具有特定名称空间的所有程序集的列表。
我该怎么做
答案 0 :(得分:0)
您无法事先知道程序集中定义了哪些名称空间(不是直接定义;为此,您需要反编译器,然后需要文件解析器来检查其名称空间)。
您可以做的是加载所需的所有程序集System.Reflection.Assembly Load(pathToAssembly)
,然后遍历它们的.DefinedTypes()
来过滤所需的名称空间。
加载当前项目的所有程序集:
List<Assembly> assemblies = new List<Assembly>();
string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
foreach (var path in Directory.GetFiles(assemblyFolder, "*.dll"))
{
assemblies.Add(Assembly.LoadFrom(path));
}