Я намагаюся відсканувати збірку для типів, що реалізують певний інтерфейс, використовуючи код, подібний до цього:
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()
в деяких випадках, наприклад, якщо збірка містить типи, що посилаються на збірку, яка наразі недоступна.
У моєму випадку мене не цікавлять типи, що викликають проблему. Типи, які я шукаю, не потребують недоступних збірок.
Питання: чи можна якось пропустити / проігнорувати типи, що викликають виняток, але все одно обробити інші типи, що містяться в збірці?
AppDomain.CurrentDomain.GetAssemblies()
, це працює на моїй машині, але не на інших машинах. Чому, блін, деякі збірки з мого виконуваного файлу в будь-якому разі не будуть читабельними / завантаженими ??