.net 如何从引用的NuGet包中获取实现特定接口的类型?

tpxzln5u  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(99)

我试图找到一种方法来获取实现某个接口的所有类,这些类的位置在引用的NuGet包中。
我知道如何使用Assembly.GetReferencedAssemblies来处理引用的dll文件。但是我该如何探索NuGet包呢?有没有一些nuget可以帮助完成这项任务?
我尝试查看PackageManager类,但没有找到所需的内容。

qoefvg9y

qoefvg9y1#

正如Klaus在注解中所说的,在运行时,您仍然要处理程序集,因此您可以使用当前正在使用的技术。
为了避免扫描每个程序集,您可以在目标程序集(NuGet包)中选取一个类型,获取其Assembly属性,然后从该属性加载类型。

typeof(SomeTypeInSomeNuGetPackageAssembly).Assembly
    .GetTypes()
    .Where(x => x.GetInterface("...") != null)
    ...

相关问题