Я ищу более эффективный способ найти тип в сборке, который наследуется от известного определенного типа. По сути, в моем приложении есть архитектура плагинов, и мы долгое время занимались этим:
For Each t As Type In assem.GetTypes()
If t.BaseType Is pluginType Then
'Do Stuff here'
End If
Next
Некоторые плагины имеют большое количество типов, и мы начинаем видеть, что это занимает несколько секунд. Есть ли способ, которым я могу просто попросить все типы, которые имеют базовый тип «pluginType»?
EDIT:
Я слишком упростил мой пример кода. Я использовал .GetExportedTypes () в моем фактическом коде. Однако многие классы были помечены как общедоступные, так что это не сильно помогало. Я прочесал проекты и пометил все «Друг», за исключением фактического класса плагина, и все еще требуется примерно столько же времени для изучения сборок. Я сократил, возможно, 100 мс от 1,3 секунды (что составляет менее 10%). Это просто минимальное время, с которым мне приходится иметь дело? Я также попробовал предложение «Атрибут сборки», и оно все равно не принесло большой разницы (возможно, снова 100 мс). В остальное время мне приходится платить за динамическую загрузку сборок?