我是新来的企业图书馆。我正在尝试验证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
为了验证JuvenileClientContactItem
对象中的两个Address
子对象,我需要执行单独调用到Validate
方法,如:
residentaddressValidationResults = validationService
.Validate(Of BusinessObjects.AddressType) _
(juvenileClientContactItem.ResidenceAddress, _
Me.View, "AddressTypeRuleSet")
我很想写我自己的通用验证方法,它使用反射来检查对象通过验证查找支持自我验证的包含对象,并执行调用并将所有验证的结果汇总到单个返回的集合中。有更好的方法吗?
编辑:
继下面提到的建议,我添加了这个代码:
<System.Serializable()> _
<DataContract()> _
<HasSelfValidation()> _
<ObjectValidator()> _
Public Class AddressType
...而得到了错误的ObjectValidatorAttribute可以应用于不BA因为属性是不是这有效声明类型。
为什么?我如何纠正它?
请参阅我的编辑关于在尝试此操作时遇到的错误:“无法应用ObjectValidatorAttribute,因为该属性在此声明类型中无效”。 – ChadD 2011-03-23 17:33:04
@Velika:你应该将属性放在'JuvenileClientContactItem'类型的属性中,而不是'AddressType'本身。 – Steven 2011-03-23 19:45:43
我试过了。同样的错误。 – ChadD 2011-03-23 19:50:07