Ich habe die <out T> variante mit Interface nun getestet.
In der Basisversion funktioniert es, jedoch verwende ich in meinen Klassen einen Kontainer welcher einen fehler bezüglich 'T' erzeugt der sagt das der T parameter invariantly sein muß.
C#-Quelltext
1: 2: 3: 4:
| public interface IElementBase<out T> where T : SingleElementBase { IObservable<KeyValuePair<string, T>> Elements{get; set;} } |
Bezüglich der Frage ob dies wirklich notwendig ist bzw. der konkrete Fall:
Ich habe eine generische Basisklasse "ElementBase". Die konkreten Implementierungen halten dann Sammlungen von zb Audiofiles, Grafiken usw. und werden über einen Contentpresenter dargestellt.
Das hat alles soweit gut funktioniert. Jedoch erweitere ich das ganze nun um eine neue Gui und würde die Objekte gerne als Parameter übergeben ohne für jede Klasse die von ElementBase ableitet eine eigene Methode zu erstellen.