Я пытаюсь сканировать сборку на предмет типов, реализующих определенный интерфейс, используя код, подобный этому:
public List<Type> FindTypesImplementing<T>(string assemblyPath)
{
var matchingTypes = new List<Type>();
var asm = Assembly.LoadFrom(assemblyPath);
foreach (var t in asm.GetTypes())
{
if (typeof(T).IsAssignableFrom(t))
matchingTypes.Add(t);
}
return matchingTypes;
}
Моя проблема в том, что в некоторых случаях я получаю сообщение ReflectionTypeLoadException
при вызове asm.GetTypes()
, например, если сборка содержит типы, ссылающиеся на сборку, которая в настоящее время недоступна.
В моем случае меня не интересуют типы, вызывающие проблему. Типы, которые я ищу, не нуждаются в недоступных сборках.
Возникает вопрос: можно ли как-то пропустить / игнорировать типы, вызывающие исключение, но при этом обрабатывать другие типы, содержащиеся в сборке?