Ответ 1
Это не быстро, но до тех пор, пока Foo
является конкретным типом (а не интерфейсом), тогда он должен работать. Foo
сам не возвращается этим кодом.
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => type.IsSubclassOf(typeof(Foo)));