Der Versuch, das .NET-Äquivalent mit Hilfe von Generika herauszufinden (seit einigen Jahren mache ich Java). Hier einige Pseudo-Code für das, was ich will:Kann ich eine generische Auflistung in einer abstrakten Basisklasseneigenschaft verwenden?
abstract base class MyBase
abstract property string Name;
abstract property ObservableCollection<T> SubItems;
Dann habe ich zwei Klassen, die von myBase erben jeweils die zwei Eigenschaften implementieren würde und die Typen von Objekten in der Sammlung verschiedener würde e.
class Real1 : MyBase
property string Name
property ObservableCollection<SomeClass> SubItems;
class Real2 : MyBase
property string Name
property ObservableCollection<SomeDifferentClass> SubItems;
Der Punkt ist, diese Elemente zu ermöglichen, eine TreeView gebunden zu sein, die Elemente alle Kind erfordert die gleiche Eigenschaft Namen haben (für XAML-Bindung). Wenn ich neue Sammlungen mit einem gemeinsamen Typ erstellen muss, muss ich sie jeweils durchlaufen und sie sind groß. Ich verwalte die ursprünglichen Sammlungsdaten nicht, daher kann ich diese Klassen nicht ändern.
Anstatt Pseudocode zu schreiben, könnten Sie versuchen, ein [mcve] zu schreiben? Es sieht für mich so aus, als müsste MyBase generisch sein und dann eine 'MyBase' und eine' MyBase 'erstellen - es ist nicht klar, dass Sie die beiden Unterklassen überhaupt brauchen. –
Warum sollte sich die Eigenschaftenimplementierung in den Unterklassen von der Basisklasse (außer dem generischen Typ) unterscheiden? –