In dem Screenie habe ich ein class diagram gezeigt mit der Bleistiftklasse. Bei mir gates.
Jetzt gibt es mehrere Möglichkeiten und ich tippe immer noch auf meinen ersten Verdacht: der BindingContext bekommt keine komplette PropertyCollection.
Irgendwo down the road wird eine der Vorgängercontainerklassen ITypedList implementieren und den TypeDescriptor von Object oder eines Vorgängers von Role benutzen. Dadurch würden dir natürlich die Properties fehlen, bzw sie würden nicht mehr richtig ankommen.
Es scheint dass du den Code von Role oder RoleList + Vorfahren nicht so einfach rausrücken willst.
Ich kann dir ein NDA anbieten und du mailst mir den nötigen Code, da das mit einer Fernwartung ohne Code nix wird.
Die zweite und definitiv schniekeste Lösung wäre, wenn du auf CollectionBase verzichtest und deine Container on Grund auf generisch machst.
Du hättest also ProjectBaseList<T> : List<T> und RoleList : ProjectBaseList<Role>.
Da ProjectBaseList nicht umsonst existiert und du darin ganz sicher auf Eigenschaften des Vorgängers deiner ElementKlasse zugreifst, müsstest du sie deshalb so deklarieren:
Code:
public class ProjectBaseList<T> : List<T>
where T: IVorgänger, class
{
...
}
Ich nahm hier ein Interface.
- Erstens hast du so ein paar Vorteile...
- Kein Vererbungszwang
- virtual dispatch für jeden Call wird auf interface dispatch einmal pro Instanz, bzw einmal für jeden Element typen (falls dieser sealed ist) reduziert.
Wirklich gut ist der erste Punkt, der zweite bewirkt "nur" schnelleren Code nachdem der Jitter/NGEN drücbergerödelt ist.
- zweitens mag ich Interfaces einfach lieber.