Saya mencoba memindai rakitan untuk jenis yang menerapkan antarmuka tertentu menggunakan kode yang mirip dengan ini:
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;
}
Masalah saya adalah, bahwa saya mendapatkan ReflectionTypeLoadException
ketika memanggil asm.GetTypes()
dalam beberapa kasus, misalnya jika assembly berisi jenis referensi assembly yang saat ini tidak tersedia.
Dalam kasus saya, saya tidak tertarik dengan jenis yang menyebabkan masalah. Tipe yang saya cari tidak memerlukan rakitan yang tidak tersedia.
Pertanyaannya adalah: apakah mungkin untuk melewati / mengabaikan tipe yang menyebabkan pengecualian tetapi masih memproses tipe lain yang terdapat dalam assembly?