ฉันกำลังพยายามสแกนแอสเซมบลีสำหรับประเภทที่ใช้อินเทอร์เฟซเฉพาะโดยใช้โค้ดที่คล้ายกับสิ่งนี้:
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()
ในบางกรณีเช่นหากแอสเซมบลีมีประเภทที่อ้างถึงแอสเซมบลีซึ่งไม่สามารถใช้งานได้ในขณะนี้
ในกรณีของฉันฉันไม่สนใจประเภทที่ทำให้เกิดปัญหา ประเภทที่ฉันกำลังค้นหาไม่จำเป็นต้องมีชุดประกอบที่ไม่มีอยู่
คำถามคือเป็นไปได้ไหมที่จะข้าม / ละเว้นประเภทที่ทำให้เกิดข้อยกเว้น แต่ยังประมวลผลประเภทอื่น ๆ ที่มีอยู่ในชุดประกอบ