2010-12-11 41 views
1

如果之前詢問過此問題,我很抱歉,我嘗試了很多關鍵字組合來描述問題,但無法在Google或SO上找到任何內容。繼承和驗證問題應用程序塊的ObjectCollectionValidator

問題很簡單:我有一個對象列表。我已經用ObjectCollectionValidator標記了這個列表,以便對象得到驗證。然而,列表中的一些對象不是T型的,而是某些派生類型的。

這些派生類型具有其父項中不存在的需要驗證的屬性。他們根本不會。我認爲VAB在處理ObjectCollectionValidator時沒有檢查繼承類型,但這在我看來是一個缺陷,所以我希望我錯了。順便說一句,我使用EntLib的4.1(而我想,我不能切換到EntLib 5.0)。

回答

2

你目睹的是VAB 4.1中已經解決的VAB 4.1的設計怪癖。在VAB 5.0中,當您使用ObjectCollectionValidatorAttribute修飾集合屬性時,可以省略實際類型,在這種情況下,驗證程序將按實際類型驗證對象。

如果你不能切換到VAB 5.0,你唯一能做的就是編寫你自己的對象集合驗證器。這並不困難。看看VAB 5.0的ObjectCollectionValidatorAttributeObjectCollectionValidator的來源。

祝你好運。