Да, это может быть сделано, но вам не хватит способа сообщить больше информации о том, какие правила были нарушены в случае ошибок проверки.
NHibernate Validator, насколько мне известно, предоставляет только возможность указать текстовое сообщение, имя класса и - в случае атрибутов проверки уровня свойства - имя нарушенного свойства.
Если ваш атрибут HasSelfValidationAttribute
реализует IRuleArgs
, указывающий на IValidator
(или IInitializableValidator
), он не имеет возможности передать что-либо еще, кроме простого string Message
и имени класса, которое вероятно, будет слишком мало информации, если вы хотите проверить «настоящие бизнес-правила».
NHibernate Validator отлично подходит для простой проверки, относящейся к свойствам класса, но не подходит, когда вам нужно выполнить более сложную проверку.