Estoy tratando de escanear un ensamblado en busca de tipos que implementen una interfaz específica usando un código similar a este:
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;
}
Mi problema es que obtengo un ReflectionTypeLoadException
al llamar asm.GetTypes()
en algunos casos, por ejemplo, si el ensamblado contiene tipos que hacen referencia a un ensamblado que actualmente no está disponible.
En mi caso, no me interesan los tipos que causan el problema. Los tipos que estoy buscando no necesitan los ensamblados no disponibles.
La pregunta es: ¿es posible omitir / ignorar de alguna manera los tipos que causan la excepción pero aún así procesar los otros tipos contenidos en el ensamblaje?
AppDomain.CurrentDomain.GetAssemblies()
, esto funciona en mi máquina pero no en otras máquinas. ¿Por qué diablos algunos ensamblajes de mi ejecutable no se pueden leer / cargar de todos modos?