KeyValuePair Kovarianz

9

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?

    
Ben Foster 16.02.2013, 11:52
quelle

2 Antworten

5

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:

%Vor%

Hier ein Beispielcode, mit dem Sie das erreichen können:

%Vor%     
Ani 16.02.2013, 14:52
quelle
0

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.

    
Pavel Voronin 16.02.2013 13:39
quelle

Tags und Links