如果以前曾经问过这个问题,我很抱歉,我尝试了多种关键字组合来描述问题,但无法在Google或SO上找到任何内容。
问题很简单:我有一个对象列表。我已使用ObjectCollectionValidator
标记此列表,以便验证对象。但是,列表中的某些对象不是T类型,而是某些派生类型。
这些派生类型的父项中不存在需要验证的属性。他们根本不会。我相信在处理ObjectCollectionValidator
时VAB不会检查继承类型,但我认为这是一个缺陷,所以我希望我错了。
顺便说一句,我正在使用EntLib的4.1(虽然我想要,但我无法切换到EntLib 5.0)。
答案 0 :(得分:2)
您目睹的是VAB 4.1的设计怪癖,已在VAB 5.0中解决。在VAB 5.0中,当您使用ObjectCollectionValidatorAttribute
修饰集合属性时,可以省略实际类型,在这种情况下,验证程序将根据实际类型验证对象。
如果无法切换到VAB 5.0,您唯一能做的就是编写自己的对象集合验证器。这并不难。只需查看VAB 5.0 ObjectCollectionValidatorAttribute
和ObjectCollectionValidator
的来源。