c# - 如何在 C# 中搜索特定程序集中的类型使用情况
问题描述
例如,如果一个程序集引用了一个包含许多类型的库,我如何使用反射来确定该程序集是否使用该引用库中的特定类型。
如果我的库 DLL 有
public class LibraryClass1
public class LibraryClass2
但是引用 DLL 的程序集只使用LibraryClass1
(例如 new LibraryClass1()
)而不是LibraryClass2
,我怎么能确定呢?
解决方案
好吧,要确定在程序集中加载了哪个类,您需要加载它并获取包含的所有类型,然后提出问题,如果您有一个在那里使用的该类的实例。
像这样的东西
var assembly = Assembly.GetExecutingAssembly().GetReferencedAssemblies().Select(Assembly.Load);
var definedTypes = assembly.SelectMany(a => a.DefinedTypes);
var types = definedTypes.ToList().Select(dt => dt.AsType());
var toRet = types.Any(t => t.IsClass && t.IsInstanceOfType(typeof(LibraryClass1)));
希望这可以帮助
推荐阅读
- c# - 从 Xml 中删除元素会在重新加载时破坏格式
- javascript - 返回一个常规数组而不是 Observable
在 RxJS 中 - c++ - 当我使用 size(vec) 而不是 vec.size() 来查找向量的大小时出现错误。如何解决这个问题?
- reactjs - 如何在我的 createContext() 和 createContext().Provider 中管理 2 个不同的状态?
- macos - 在 MacOS 中如何防止 hosts 文件被更改为原始文件?
- swift - 在 Firebase 中为 TextView Swift 保存字体和大小的方法是什么
- algorithm - N 个数字数组的快速排序基本案例
- aem - 在 HTL (Sightly) 中以 JSON 格式访问 AEM 组件数据
- excel - 典型 Excel 365 对象的 Microsoft 文档是指“适用于列表中的对象”,但“适用于列表”在哪里?
- c++ - 尝试在 C++ 中使用链表构建队列,但出现此错误: