Предполагая, что ваша сборка загружена в thisAsm (в этом примере я использую исполняющую сборку),
Это даст вам все неабстрактные классы:
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList();
И это даст вам все классы, которые реализуют определенный интерфейс.
(Например, если вам нужно получить только те классы, которые реализуют IYourInterface, то)
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where
(t => ((typeof(IYourInterface).IsAssignableFrom(t)
&& t.IsClass && !t.IsAbstract))).ToList();
Как только вы получите этот список элементов, вы можете отобразить элементы каждого типа, вызвав GetProperties () и GetMethods () для каждого элемента списка типов.