Gibt es in diesem Beispiel eine bessere Möglichkeit, Covarianz nachzuahmen? Idealerweise würde ich gerne tun:
%Vor% Aber KeyValuePair<TKey, TValue>
ist nicht kovariant.
Stattdessen muss ich tun:
%Vor%Gibt es einen besseren / saubereren Weg?
Leider ist KeyValuePair<TKey, TValue>
eine Struktur; und Strukturen zeigen keine Varianz in .NET.
Sie können das natürlich lösen, indem Sie Ihre eigene kovariante Pair
-Schnittstelle und einige einfache Helfer schreiben, um zwischen Sequenzen von KeyValuePair
und Ihrer benutzerdefinierten Pair
-Schnittstelle zu konvertieren. Dies wird Sie tun lassen:
Hier ein Beispielcode, mit dem Sie das erreichen können:
%Vor%Kaum. KVP ist eine Struktur: Keine iTernface, ist von ValueType.
Interessant SO-Post zu Abweichungen.
Ich denke, dass Abbilder leistungsfähiger sind, daher würde ich lieber so programmieren:
%Vor% Und wirf KeyValuePair.Value
auf ICollection
, wo ich wirklich muss. Offen gesagt hängt es davon ab, wie foos verwendet wird.
Tags und Links c# covariance c#-4.0 keyvaluepair