我正在尝试构建依赖关系管理工具。因此,我需要从所有库中获取所有类。
有三个用C#编写的.NET Core 3.0项目。
ProjectA是一个可执行的控制台应用程序。
而ProjectA引用了ProjectB。ProjectB引用ProjectC。
ProjectA-> ProjectB-> ProjectC
对于ProjectC中的代码:
// In ProjectC
Assembly.GetExecutingAssembly().GetTypes()
// That can list all classes in ProjectC.
对于ProjectC中的代码:
// In ProjectC
Assembly.GetEntryAssembly().GetTypes()
// That can list all classes in ProjectA.
但是如何在ProjectB中列出所有类?(ProjectC中的代码,由ProjectA运行)
我有一个解决方案:
只需从条目汇编开始构建依赖关系树:
// Code this in project C. Run this by project A.
// Entry is A.
var entry = Assembly.GetEntryAssembly();
entry
// This will get B and C with type: `AssemblyName`
.GetReferencedAssemblies()
// Load assembly B and C.
.Select(t => Assembly.Load(t))
// Get all class in B and C.
.SelectMany(t => t.GetTypes())
.ToList();
获取引用程序集的方法是:
Assembly.GetReferencedAssemblies
方法
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句