Я новичок в Enterprise Library.Я пытаюсь проверить бизнес-объект типа JuvenileClientContactItem
.
. Объекты JuvenileClientContactItem
содержат объекты, в данном случае два экземпляра объектов типа AddressType
.
Когда я выполняю следующий вызов для проверки JuvenileClientContactItem
, я ожидал, что все содержащиеся в нем объекты также будут проверены, и любые ошибки, обнаруженные в объекте PersonType
, будут добавлены в коллекцию ValidationResults
, но только проверки JuvenileClientContactItem
oject были выполнены.
validationResults = validationService
.Validate(Of JuvenileClientContactItem) _
(juvenileClientContactItem, _
"JuvenileClientContactItemRuleSet", "PersonTypeRuleSet")
Вот подпись функции проверки библиотеки предприятия:
Public Shared Function Validate(Of T)(ByVal target As T, _
ByVal ParamArray rulesets() As String) _
As Microsoft.Practices.EnterpriseLibrary.Validation.ValidationResults
Чтобы проверить два субобъекта Address
в объекте JuvenileClientContactItem
, мне нужно выполнить отдельные вызовык методу Validate
, например:
residentaddressValidationResults = validationService
.Validate(Of BusinessObjects.AddressType) _
(juvenileClientContactItem.ResidenceAddress, _
Me.View, "AddressTypeRuleSet")
Я испытываю желание написать свой собственный универсальный метод проверки, который использует отражение для проверки объекта, переданного для проверки, поиска содержащихся объектов, которые поддерживают самопроверку, и выполнения вызовови объединить результаты всех проверок в одну возвращенную коллекцию.Есть ли лучший подход?
Редактировать:
Следуя предложению, указанному ниже, я добавил этот код:
<System.Serializable()> _
<DataContract()> _
<HasSelfValidation()> _
<ObjectValidator()> _
Public Class AddressType
... И получил ошибку, что ObjectValidatorAttributeне может быть применено, потому что атрибут недопустим в этом типе объявления.
Почему?Как мне это исправить?