Как я могу создать модульный тест, который проверяет, что все текущие валидаторы могут быть разрешены Windsor? - PullRequest
0 голосов
/ 14 июля 2011

Я использую FluentValidation в своем приложении для проверки своих сущностей, но у меня возникла небольшая проблема.Моя фабрика валидации настроена на разрешение классов валидации из Виндзора, пытаясь разрешить его из интерфейса IValidator<EntityType>.

Я хочу убедиться, что всякий раз, когда создается класс валидации, никто не забудет зарегистрировать его в Виндзоре.

По сути, я хочу посмотреть на все классы в сборке, которые реализуют интерфейс IValidator<EntityType>, и вызвать WindsorContainer.Resolve(typeof(IValidator<EntityType>)) для разрешения этого типа, где EntityType может быть любым классом в сборке.До сих пор, используя рефлексию, я смог вытащить все классы, которые получены из универсального интерфейса IValidator<>, но я не могу понять, как действовать дальше.Проблема в том, что мне нужно было бы найти какой-то способ извлечь фактическую сущность, используемую в универсальном, чтобы правильно вызывать Виндзор, и я не знаю, как это сделать.

Есть ли более простой способсделать это?

1 Ответ

1 голос
/ 14 июля 2011

Я хочу убедиться, что при создании класса проверки никто не забудет зарегистрировать его в Windsor.

Зачем вы это делаете?У вас должен быть установщик , который автоматически обнаруживает эти классы проверки и регистрирует их для вас.Тогда вам нужно только проверить, правильно ли вы кодировали установщик.

Тот факт, что кто-то добавляет класс, который реализует IValidator<TEntity> для некоторых TEntity, не должен нарушать ваш код!

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

Вы хотите Type.GetGenericArguments.

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