Gewusst wie: Auflisten von einer generischen List<T>, ohne zu wissen, die Art

Leite ich eine generische Liste an eine Funktion , ich möchte aufzählen der Objekte in der Liste. Wenn ich in der Lage, aufzählen von Elementen in der Liste, die ich verwenden wird, die Reflexion auf den rest.

 var Items= new List<String>(){"s1","s2"};
  Enumerate(Items);
  void Enumerate(object items)
  {
        //i know the type so i  can cast and enumerate
        foreach(var item in (List<String>) items)
        {

        }
        //i don't know the type of object in the list
        //Following won't work , can't cast to List<object> 
        foreach (var item in (List<object>) items)
        {

        }
    }
  • sollten Sie nicht vorbei und werden ein IEnumerable<T> statt Objekt?
  • wie kann ich den parameter als Typ " IEnumerable<T> , Das Objekt an die Funktion übergeben wird immer ein List<T> , aber der Typ des Objekts in der Liste anders sein wird
  • die größere Frage ist, warum haben Sie andere Objekte in der Liste? Der übliche Weg, dies zu erreichen ist mit dem Composite-design-pattern...
  • Sie brauchen nicht zu wissen, geben Sie nur für die Aufzählung. Wenn Sie zu manipulieren, dann sind Sie definitiv brauchen. Wenn Sie haben, um zu überprüfen, einige verschiedene Typen von Objekten mit ähnlichen Eigenschaften sind, dann würde ich dir empfehlen, um Schnittstelle zu verwenden, und Listen Sie auf, dass. wie `foreach(var i in (Liste<IYourInterface>) - items)...
  • Auch die Verwendung einer Schnittstelle wie dieser kann schwierig sein pre-C# 4.0, wenn Sie nicht über eine List<IYourInterface> in den ersten Platz.
InformationsquelleAutor Priyan R | 2009-09-10
Schreibe einen Kommentar