Прокси NHibernate не позволяют компоненту Castle.Validator выполнять свою работу - PullRequest
0 голосов
/ 27 марта 2009

Я столкнулся с проблемой проверки прокси-сервера NHibernate с использованием компонента Castle.Validator. Похоже, валидатор не смог получить атрибуты из свойств прокси-объекта.

Я пытался определить атрибуты проверки, используя Inherited = true, в то время как бегун Castle.Validator извлекает их, используя следующую инструкцию:

property.GetCustomAttributes(typeof(IValidatorBuilder), true);

Значит, он должен извлекать атрибуты из моих сущностей, в то время как они являются технически базовыми классами для проверяемого объекта (прокси)? Почему это не работает? GetCustomAttribute всегда возвращает пустой массив.

Ответы [ 2 ]

2 голосов
/ 27 марта 2009

То же самое случилось со мной. Проблема в том, что NHibernate не наследует атрибуты при создании прокси. Все, что я нашел, это сообщение на форуме , в котором проблема распознается и дает простое Обходной путь (только не используйте прокси при проверке), и это то, что я в итоге сделал.

Могу ли я порекомендовать эту библиотеку проверки: Свободная проверка , я еще не использовал ее, но планирую использовать, главным образом потому, что устал от использования атрибутов (из-за таких проблем).

0 голосов
/ 27 марта 2009

Атрибуты в порядке, потому что они действительно являются частью модели предметной области.

Я думаю, что нашел решение проблемы. Я исправил Castle.Validator, чтобы сделать так, думал. Это безумие, но этот код:

property.GetCustomAttributes(true /*inherit*/);

возвращает пустой массив, в то время как, по моему скромному мнению, полностью эквивалентный код возвращает атрибуты:

System.Attribute.GetCustomAttributes(property);

Что за @ # $%?

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