Kovarianz in Sammlungen mit Indexunterstützung
Kovarianz in Sammlungen ermöglicht die Speicherung abgeleiteter Elemente in einer für einen Basistyp deklarierten Sammlung. Allerdings fehlt der standardmäßigen kovarianten Sammlung, IEnumerable, die Indexunterstützung.
Wie der Fragesteller feststellt, ist das Upcasting einer List
Mögliche Lösungen
Ab .NET 4.5 ist IReadOnlyList
Erstellen eines kovarianten Wrappers
Wenn eine beschreibbare Sammlung mit Indexunterstützung erforderlich ist, kann eine Erweiterungsmethode erstellt werden, um eine IList< zu verpacken ;T> und nur die Teilmenge der Methoden verfügbar machen, die die gewünschte Kovarianz bereitstellen:
public static class Covariance { public static IIndexedEnumerable<T> AsCovariant<T>(this IList<T> tail) { return new CovariantList<T>(tail); } private class CovariantList<T> : IIndexedEnumerable<T> { // Implementation... } }
Diese Wrapper-Klasse, CovariantList
Durch Aufrufen von AsCovariant
Das obige ist der detaillierte Inhalt vonWie kann ich Kovarianz mit Indexunterstützung in Sammlungen erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!