Ich habe einenConvert Liste Typ IEnumerable Schnittstellen Typ
List<Person> personlist;
Wie kann ich konvertieren
IEnumerable<IPerson> iPersonList
Person Implementiert IPerson Schnittstelle
Ich habe einenConvert Liste Typ IEnumerable Schnittstellen Typ
List<Person> personlist;
Wie kann ich konvertieren
IEnumerable<IPerson> iPersonList
Person Implementiert IPerson Schnittstelle
Wenn Sie in .NET 4.0 oder höher sind, können Sie nur eine implizite Umwandlung tun:
IEnumerable<IPerson> iPersonList = personlist;
//or explicit:
var iPersonList = (IEnumerable<IPerson>)personlist;
Dies verwendet allgemeine Kontra in IEnumerable<out T>
- also da Sie immer nur etwas aus ein IEnumerable
erhalten, können Sie implizit konvertieren IEnumerable<T>
zu IEnumerable<U>
wenn T : U
. (Es verwendet auch, dass List<T> : IEnumerable<T>
.)
Andernfalls müssen Sie jedes Element mit LINQ werfen:
var iPersonList = personlist.Cast<IPerson>();
können Sie die Verwendung IEnumerable.Cast
var iPersonList = personlist.Cast<IPerson>();
@ManishSingh Sie müssen' using System.Linq; ' – juharr
Seit .NET 4.0, Sie List<Person>
ein Verfahren mit einem Parameter vom Typ IEnumerable<IPerson>
ohne implizite passieren können oder explizites Casting.
Implizite Gießen erfolgt automatisch (wenn möglich), dank contravariance
Sie dies tun können:
var people = new List<Person>();
// Add items to the list
ProcessPeople(people); // No casting required, implicit cast is done behind the scenes
private void ProcessPeople(IEnumerable<IPerson> people)
{
// Processing comes here
}
'Liste' ist ein '' IEnumerable . –
patrickinmpls was versuchst du letztendlich zu tun ..? können Sie versuchen, die 'Cast'-Erweiterung Methode Nachschlagen – MethodMan