Как вы находите все реализации интерфейса в коде? - PullRequest
1 голос
/ 23 октября 2009

Мой вопрос очень похож на этот вопрос . Однако мне было интересно, как я могу программно идентифицировать каждый класс в данном пространстве имен, который реализует определенный интерфейс в методе (чтобы я мог добавить объект каждого в список), подобно тому, как Stripes Framework (в Java) находит все классы, которые реализуют интерфейс ActionBean.

Образцы кода были бы хороши, но если что-то еще мне нужно, нужно указать в правильном направлении.

1 Ответ

1 голос
/ 23 октября 2009

Вы можете использовать отражение, в частности, Type.IsAssignableFrom , чтобы проверить все типы в сборке.

Однако это отличается от поиска всех типов в пространстве имен. Сложность заключается в том, что пространство имен можно использовать в нескольких сборках, поскольку в .NET нет ничего особенного в пространстве имен. Это просто префикс фактического имени типа, но в IL это не пространство имен System, содержащее Int32, а единственный тип System.Int32.

Я бы порекомендовал поискать все типы в сборке, посмотреть, начинается ли имя типа с вашего имени пространства имен, а затем проверить, можно ли назначить тип вашего интерфейса из типа. Если это так, он реализует интерфейс. Повторите эти действия для всех сборок, определяющих типы в рассматриваемом пространстве имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...