Sto cercando di scansionare un assembly per i tipi che implementano un'interfaccia specifica utilizzando un codice simile a questo:
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;
}
Il mio problema è che ottengo un ReflectionTypeLoadExceptionquando chiamo asm.GetTypes()in alcuni casi, ad esempio se l'assembly contiene tipi che fanno riferimento a un assembly che attualmente non è disponibile.
Nel mio caso, non sono interessato ai tipi che causano il problema. I tipi che cerco non necessitano degli assembly non disponibili.
La domanda è: è possibile in qualche modo saltare / ignorare i tipi che causano l'eccezione ma elaborare comunque gli altri tipi contenuti nell'assembly?
AppDomain.CurrentDomain.GetAssemblies(), funziona sulla mia macchina ma non su altre macchine. Perché diamine alcuni assembly dal mio eseguibile non sarebbero comunque leggibili / caricati ??