我有一个Address对象,我试图使用EntLib来验证数据:
考虑以下方法:
<ValidatorComposition(CompositionType.And, Ruleset:="FraudAnalysis")> _
<NotNullValidator(MessageTemplate:="Billing address is required.", Ruleset:="FraudAnalysis")> _
<TypeConversionValidator(GetType(Address), MessageTemplate:="Billing address must be an address object.", Ruleset:="FraudAnalysis")> _
Public Property BillingAddress() As Address
Get
Return _BillingAddress
End Get
Set(ByVal value As Address)
_BillingAddress = value
End Set
End Property
我创建了一个地址对象:
Address thisAddress = new Address();
thisAddress.Address1 = "12312 Long Street";
thisAddress.City = "Los Angeles";
thisAddress.State = "CA";
thisAddress.Zip = "93322";
// set billing address to address
cardX.BillingAddress = thisAddress;
现在在cardX.billingAddress = thisAddress,应该触发BillingAddress属性验证器(GetType(Address))。它似乎会触发,但会返回此错误:
要验证的值不是预期的类型:预期的System.String,而是获得了地址。
有人可以在这里看到问题/建议修复吗?
感谢。
答案 0 :(得分:1)
我会删除ValidatorComposition
和TypeConversionValidator
声明,因为我认为它们在这里是多余的。这样就可以摆脱你的错误和几行代码。
该属性已经强类型化为Address
类,因此您无法在代码中将其设置为不是Address
的对象,或者与{{不是多态的对象1}} - 有一个额外的验证器来检查这是多余的。
验证器的默认组合是逻辑AND无论如何,您只需要在想要OR组时指定验证器组合,或者使用组合AND / OR的更复杂的组。