Ответ 1
Вы можете загружать все типы в сборку, а затем перечислять их, чтобы увидеть, какие из них реализуют тип вашего объекта. Вы сказали "объект", поэтому приведенный ниже пример кода не для интерфейсов. Кроме того, этот образец кода ищет только ту же сборку, что и объект, объявленный в.
class A
{}
...
typeof(A).Assembly.GetTypes().Where(type => type.IsSubclassOf(typeof(A)));
Или, как предложено в комментариях, используйте этот образец кода для поиска по всем загруженным сборкам.
var subclasses =
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.IsSubclassOf(typeof(A))
select type
Оба образца кода требуют, чтобы вы добавили using System.Linq;