Enterprise Library を初めて使用します。タイプ のビジネス オブジェクトを検証しようとしていJuvenileClientContactItem
ます。
オブジェクト自体にはオブジェクトが含まれています。この場合は、タイプJuvenileClientContactItem
のオブジェクトの 2 つのインスタンスです。AddressType
を検証するために次の呼び出しを実行すると、JuvenileClientContactItem
含まれているすべてのオブジェクトも検証され、オブジェクトで発生したエラーがコレクションにPersonType
追加されると予想していましたが、オブジェクトの検証のみが実行されました。ValidationResults
JuvenileClientContactItem
validationResults = validationService
.Validate(Of JuvenileClientContactItem) _
(juvenileClientContactItem, _
"JuvenileClientContactItemRuleSet", "PersonTypeRuleSet")
Enterprise Library Validate 関数のシグネチャは次のとおりです。
Public Shared Function Validate(Of T)(ByVal target As T, _
ByVal ParamArray rulesets() As String) _
As Microsoft.Practices.EnterpriseLibrary.Validation.ValidationResults
Address
オブジェクト内の 2 つのサブオブジェクトを検証するには、メソッドJuvenileClientContactItem
を個別に呼び出す必要があります。次に例を示します。Validate
residentaddressValidationResults = validationService
.Validate(Of BusinessObjects.AddressType) _
(juvenileClientContactItem.ResidenceAddress, _
Me.View, "AddressTypeRuleSet")
リフレクションを使用して検証用に渡されたオブジェクトを調べ、自己検証をサポートし、呼び出しを実行し、すべての検証の結果を 1 つの返されたコレクションに集約する、含まれているオブジェクトを探す独自の汎用検証メソッドを作成したいと思います。より良いアプローチはありますか?
編集:
以下の提案に従って、次のコードを追加しました。
<System.Serializable()> _
<DataContract()> _
<HasSelfValidation()> _
<ObjectValidator()> _
Public Class AddressType
...そして、属性がこの宣言タイプで有効でないため、ObjectValidatorAttribute を適用できないというエラーが発生しました。
なんで?どうすれば修正できますか?