首页 > 解决方案 > 如何在 C# 中搜索特定程序集中的类型使用情况

问题描述

例如,如果一个程序集引用了一个包含许多类型的库,我如何使用反射来确定该程序集是否使用该引用库中的特定类型。

如果我的库 DLL 有

public class LibraryClass1

public class LibraryClass2

但是引用 DLL 的程序集只使用LibraryClass1(例如 new LibraryClass1())而不是LibraryClass2,我怎么能确定呢?

标签: c#reflection

解决方案


好吧,要确定在程序集中加载了哪个类,您需要加载它并获取包含的所有类型,然后提出问题,如果您有一个在那里使用的该类的实例。

像这样的东西

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)));

希望这可以帮助


推荐阅读