Я пытаюсь отсканировать сборку для типов, реализующих определенный интерфейс, используя код, подобный следующему:
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()
в некоторых случаях, например если сборка содержит типы, ссылающиеся на сборку, которая в данный момент недоступна.
В моем случае меня не интересуют типы, вызывающие проблему. Типы, которые я ищу, не нуждаются в недоступных сборках.
Вопрос в том, можно ли каким-то образом пропустить / игнорировать типы, которые вызывают исключение, но все же обрабатывают другие типы, содержащиеся в сборке?