Полагаю, проблема может заключаться в том, что некоторые из ваших сборок, на которые есть ссылки, в данный момент не загружены. Вы можете получить все ссылочные сборки с помощью GetReferencedAssemblies - но это даст только имена.
Если хотите, вы можете пойти и загрузить сборки с помощью Assembly.Load и проверить их дальше.
Таким образом, возможный фрагмент должен быть
var types =
System.Reflection.Assembly.GetExecutingAssembly()
.GetReferencedAssemblies()
.SelectMany(name => Assembly.Load(name).GetTypes())
.Union(AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()));
для поиска типов, реализующих ваш интерфейс:
var withInterfaces =
types.Where(t => t.GetInterfaces().Any(i => i == typeof(IDisposable)));
Если это не тот трюк, я тоже потерялся ...