Как получить список классов проекта, реализующих некий интерфейс и не являющихся абстрактными?
Потом этот список будет передаваться в метод
public void Register(Type newClass)
Здравствуйте, IlyaLevchenko, Вы писали:
IL>Как получить список классов проекта, реализующих некий интерфейс и не являющихся абстрактными?
IL>Потом этот список будет передаваться в метод
IL>public void Register(Type newClass)
Проекта или сборки (assembly)?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, IlyaLevchenko, Вы писали:
IL>>>Как получить список классов проекта, реализующих некий интерфейс и не являющихся абстрактными?
D>>Проекта или сборки (assembly)?
IL>Чукча не читатель... Скорее всего проекта. В общем, есть определенный namespace и хочется выдернуть список его классов, которые реализуют некий интерфейс.
Я думаю, что скорее всего из сборки. Примерно как-то так.
Assembly assembly = Assembly.GetExecutingAssembly(); // или загрузить сборку...
foreach (Type type in assembly.GetExportedTypes()) {
if (!type.IsAbstract && typeof(MyInterface).IsAssignableFrom(type)) {
Console.WriteLine(type.Name);
}
Здравствуйте, IlyaLevchenko, Вы писали:
D>>Проекта или сборки (assembly)?
IL>Чукча не читатель... Скорее всего проекта. В общем, есть определенный namespace и хочется выдернуть список его классов, которые реализуют некий интерфейс.
Ну тогда брать файл проекта, вытаскивать ссылки на файлы, парсить их, резолвить зависимости и т.д.
Если же всё-таки сборки, то cм. Assembly.GetTypes(), Type.IsAssignableFrom(), Type.Namespace, Type.IsAbstract
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>