代码之家  ›  专栏  ›  技术社区  ›  B''H Bi'ezras -- Boruch Hashem

C#基于命名空间获取程序集

c#
  •  0
  • B''H Bi'ezras -- Boruch Hashem  · 技术社区  · 6 年前

    我看过“从程序集获取命名空间”--但是您如何知道命名空间在哪个程序集中?我尝试获取所有类型的名称空间,为此我需要了解程序集,但程序集并不总是Assembly.GetExecutingAssembly程序集,我需要得到一个包含特定命名空间的所有程序集的列表。

    我该怎么做

    1 回复  |  直到 6 年前
        1
  •  3
  •   Mihai    6 年前

    您无法预先知道程序集中定义了哪些名称空间(不是直接定义的;为此,您需要一个反编译器,然后一个文件解析器来检查它们的名称空间)。

    你能做的就是加载你想要的所有程序集 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));
    }