如何有效地在装配体中找到特定类型*?

Bob*_*ing 5 .net reflection types assemblies

我正在寻找一种更有效的方法来查找从已知特定类型派生的程序集中的类型.基本上,我的应用程序中有一个插件架构,并且我们一直这样做的时间最长:

For Each t As Type In assem.GetTypes()
    If t.BaseType Is pluginType Then
        'Do Stuff here'
    End If
Next
Run Code Online (Sandbox Code Playgroud)

一些插件有很多类型,我们开始看到这需要几秒钟.有什么办法我可以要求所有类型为BaseType为"pluginType"的类型?

编辑:我过度简化了我的代码示例.我在实际代码中使用.GetExportedTypes().但是,我很多课程被标记为公共,所以它没有太多帮助.我梳理了项目并标记了除了实际插件类之外的所有"朋友",并且它仍然需要几乎相同的时间来检查程序集.我在1.3秒内切断了100毫秒(小于10%).这只是我必须处理的最短时间吗?我也尝试了装配属性建议,它仍然没有产生太大的差异(可能再次100ms).剩下的时间是动态加载程序集必须支付的开销吗?

BC.*_*BC. 1

Assembly.GetExportedTypes() 仅返回公共类。这有帮助吗?