2010-12-11 10 views
1

Es tut mir leid, wenn dies schon einmal gefragt wurde, habe ich viele Kombinationen von Keywords versucht, um das Problem zu beschreiben, konnte aber nichts auf Google oder SO finden.Probleme mit Vererbung und ObjectCollectionValidator des Validation Application Blocks

Das Problem ist einfach: und ich habe eine Liste von Objekten. Ich habe diese Liste mit ObjectCollectionValidator markiert, damit Objekte validiert werden. Einige der Objekte in der Liste sind jedoch nicht vom Typ T, sondern von einem abgeleiteten Typ.

Diese abgeleiteten Typen haben Eigenschaften, die bei ihren Eltern nicht vorhanden sind und die validiert werden müssen. Sie werden einfach nicht. Ich glaube, dass VAB keine vererbten Typen prüft, wenn es um ObjectCollectionValidator geht, aber das ist meiner Meinung nach ein Fehler, also hoffe ich, dass ich falsch liege.

Übrigens benutze ich EntLib 4.1 (und während ich wollte, kann ich nicht zu EntLib 5.0 wechseln).

Antwort

2

Was Sie erleben, ist eine Entwurfseigenschaft von VAB 4.1, die in VAB 5.0 gelöst wurde. Wenn Sie in VAB 5.0 eine Auflistungseigenschaft mit einer ObjectCollectionValidatorAttribute versehen, können Sie den tatsächlichen Typ weglassen, und in diesem Fall validiert der Validierer Objekte anhand ihres tatsächlichen Typs.

Wenn Sie nicht zu VAB 5.0 wechseln können, können Sie nur Ihren eigenen Objekt-Collection-Validator schreiben. Das ist nicht wirklich schwierig. Schauen Sie sich einfach die Quelle von ObjectCollectionValidatorAttribute und ObjectCollectionValidator von VAB 5.0 an.

Viel Glück.