1

很抱歉,如果之前有人问过这个问题,我尝试了许多关键字组合来描述这个问题,但在 Google 或 SO 上找不到任何东西。

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

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

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

4

1 回答 1

2

您所看到的是 VAB 4.1 的设计怪癖已在 VAB 5.0 中得到解决。在 VAB 5.0 中,当您使用 a 装饰集合属性时ObjectCollectionValidatorAttribute,您可以省略实际类型,在这种情况下,验证器将根据对象的实际类型来验证对象。

如果你不能切换到 VAB 5.0,你唯一能做的就是编写你自己的对象集合验证器。这其实并不难。看看VAB 5.0的ObjectCollectionValidatorAttribute和源代码就知道了。ObjectCollectionValidator

祝你好运。

于 2010-12-11T22:40:50.887 回答