Ich versuche eine generische Methode zu erstellen, die jedes Objekt akzeptieren kann, in dem auch das Objekt List<AnyClass>
ist.
Etwas wie:
Also in meiner Methode akzeptieren sie den Parameter als Objekt, dann werde ich bestimmen, was ich mit ihrem Typ machen soll
Wenn ich weiß, dass es sich um einen List-Typ handelt, möchte ich dieses Objekt wieder in List<AnyClass>
konvertieren, jedes Objekt und seine Eigenschaften
Ich habe versucht zu tun:
%Vor% Aber es wird null
zurückgeben, weil das Objekt ursprünglich List<AnyClass>
Vielen Dank im Voraus
=================
Edit: Tut mir leid, ich habe es nicht klar gemacht, weil ich das Problem vereinfacht habe ... Ich meine das Objekt könnte sein:
%Vor% Sagen wir also, der Benutzer kann sogar List<object>
einfügen, aber jedes Objekt in dieser Liste kann eine andere Klasse sein. Deshalb kann ich <T>
nicht benutzen.
Das Original meines Problems ist:
%Vor%Dann ist es mir egal, was sie in die Liste eintragen, auch das Objekt in der Liste enthält eine andere Objektliste ...
Die generische List-Klasse implementiert die nicht-generische IList-Schnittstelle, so dass Sie sagen können:
%Vor%Was Sie jedoch versuchen zu tun, wird im Allgemeinen als schlechte Praxis angesehen, da es jeglichen Anschein von Typsicherheit beseitigt. Wenn Sie erklären, in welchem Kontext Sie dies verwenden, können wir möglicherweise eine bessere Alternative vorschlagen, wie zum Beispiel eine generische Methode.
Wenn Sie eine generische Methode erstellen möchten, die Aktionen für verschiedene Typen ausführt, erstellen Sie eine echte generische Methode:
%Vor%Ihre Frage zeigt an, dass Sie eine Methode verwenden möchten, um verschiedene Operationen für verschiedene Typen anstelle der gleichen Operation auszuführen. Vielleicht möchten Sie ein solches Design überarbeiten, indem Sie stattdessen Methodenüberladungen verwenden.
%Vor%Und so weiter für die gewünschten Typen.
List<object>
ist ein anderer Typ als z.B. %Code%. Deshalb schlägt deine Besetzung fehl.
Je nachdem, was Ihr Ziel ist, sollten Sie eine andere Lösung wählen. Es scheint, dass Ihre Methode in der Lage sein muss, mit Listen und normalen Objekten umzugehen.
List<int>
implementiert List<T>
, wodurch Sie alle Elemente aufzählen können.
Es hört sich so an, als sollten Sie Methodenüberladung anstelle der Typerkennung verwenden. Dadurch wird auch Ihre einzelne große Methode in kleinere, wartungsfreundlichere Methoden aufgeteilt.
%Vor%Tags und Links c#