Взгляните на Assembly.GetTypes()
метод. Он возвращает все типы, которые можно найти в сборке. Все, что вам нужно сделать, это перебрать каждый возвращаемый тип и проверить, реализует ли он необходимый интерфейс.
Один из способов сделать это - использовать метод Type.IsAssignableFrom
.
Вот пример. myInterface
- это интерфейс, реализации которого вы ищете.
Assembly myAssembly;
Type myInterface;
foreach (Type type in myAssembly.GetTypes())
{
if (myInterface.IsAssignableFrom(type))
Console.WriteLine(type.FullName);
}
Я верю, что это не очень эффективный способ решения вашей проблемы, но, по крайней мере, это хорошее место для начала.