Listentyp in IEnumerable-Schnittstellentyp konvertieren

8

Ich habe ein

%Vor%

Wie kann ich in

konvertieren? %Vor%

Person Implementiert die IPerson-Schnittstelle

    
patrick 25.02.2013, 16:39
quelle

3 Antworten

22

Wenn Sie in .NET 4.0 oder höher sind, können Sie einfach eine implizite Umwandlung durchführen:

%Vor%

Dies verwendet generische Kontravarianz in IEnumerable<out T> - d. h. da Sie immer nur etwas aus von IEnumerable erhalten, können Sie IEnumerable<T> implizit in IEnumerable<U> konvertieren, wenn T : U . (Es verwendet auch das List<T> : IEnumerable<T> .)

Andernfalls müssen Sie jedes Element mit LINQ umwandeln:

%Vor%     
Rawling 25.02.2013, 16:44
quelle
4

Sie können IEnumerable.Cast

verwenden %Vor%     
juharr 25.02.2013 16:42
quelle
0

Seit .NET 4.0 können Sie List<Person> an eine Methode mit einem Parameter vom Typ IEnumerable<IPerson> ohne implizites oder explizites Casting übergeben.

Das implizite Casting erfolgt automatisch (wenn möglich), dank Contravarianz

Sie können dies tun:

%Vor%     
domenu 05.12.2013 08:00
quelle

Tags und Links