Выполнение проверки бизнес-объекта. Как насчет содержащихся объектов?

Я новичок в Enterprise Library. Я пытаюсь проверить бизнес-объект типа JuvenileClientContactItem,

JuvenileClientContactItem Сам объект содержит объекты, в данном случае два экземпляра объектов AddressType тип.

Когда я выполняю следующий вызов для проверки JuvenileClientContactItemЯ ожидал, что все содержащиеся в нем объекты также будут проверены и все ошибки, обнаруженные в PersonType объект будет добавлен к ValidationResults сбор, но только проверки на JuvenileClientContactItem Объекты были выполнены.

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 не может быть применен, потому что атрибут недопустим в этом типе объявления.

Зачем? Как мне это исправить?

1 ответ

Вы должны украсить свойства TheJuvenileClientContactItem введите с ObjectValidatorAttribute, потому что Validation Application Block не будет проверять графы объектов по умолчанию (чтобы предотвратить проблемы с производительностью и исключения переполнения стека).

Другие вопросы по тегам