继承和验证问题Application Block ObjectCollection Validator的问题

时间:2010-12-11 20:19:18

标签: c# .net enterprise-library validation-application-bl

如果以前曾经问过这个问题,我很抱歉,我尝试了多种关键字组合来描述问题,但无法在Google或SO上找到任何内容。

问题很简单:我有一个对象列表。我已使用ObjectCollectionValidator标记此列表,以便验证对象。但是,列表中的某些对象不是T类型,而是某些派生类型。

这些派生类型的父项中不存在需要验证的属性。他们根本不会。我相信在处理ObjectCollectionValidator时VAB不会检查继承类型,但我认为这是一个缺陷,所以我希望我错了。

顺便说一句,我正在使用EntLib的4.1(虽然我想要,但我无法切换到EntLib 5.0)。

1 个答案:

答案 0 :(得分:2)

您目睹的是VAB 4.1的设计怪癖,已在VAB 5.0中解决。在VAB 5.0中,当您使用ObjectCollectionValidatorAttribute修饰集合属性时,可以省略实际类型,在这种情况下,验证程序将根据实际类型验证对象。

如果无法切换到VAB 5.0,您唯一能做的就是编写自己的对象集合验证器。这并不难。只需查看VAB 5.0 ObjectCollectionValidatorAttributeObjectCollectionValidator的来源。

祝你好运。