私はエンタープライズライブラリを初めて使用しています。タイプJuvenileClientContactItem
のビジネスオブジェクトを検証しようとしています。ビジネスオブジェクトの検証を実行します。含まれているオブジェクトはどうですか?
オブジェクトJuvenileClientContactItem
オブジェクトには、この場合はオブジェクトの2つのインスタンスが含まれています(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
JuvenileClientContactItem
オブジェクト内の2つのAddress
サブオブジェクトを検証するために、私はValidate
方法、例えばへの個別の呼び出しを実行する必要があります
residentaddressValidationResults = validationService
.Validate(Of BusinessObjects.AddressType) _
(juvenileClientContactItem.ResidenceAddress, _
Me.View, "AddressTypeRuleSet")
反射を使用してオブジェクトを検証する独自の一般的な検証方法を作成したいと思います検証のために渡され、自己妥当性検証をサポートしているオブジェクトが含まれているかどうかを調べ、呼び出しを実行し、すべての検証の結果を1つの返されたコレクションに集約します。より良いアプローチがありますか?
編集:
<System.Serializable()> _
<DataContract()> _
<HasSelfValidation()> _
<ObjectValidator()> _
Public Class AddressType
...そして、属性は、この上で有効でないためObjectValidatorAttributeは、BAは適用できないというエラーが発生しました:下記の提案に続き
、私はこのコードを追加しました宣言型。
なぜですか?どうすれば修正できますか?
「ObjectValidatorAttributeはこの属性がこの宣言型では有効ではないため、適用できません」というエラーが表示されます。 – ChadD
@Velika: 'AddressType'自体ではなく、' JuvenileClientContactItem'型の属性に属性を置くべきです。 – Steven
私は試しました。同じエラー。 – ChadD