Da ein List<MyObject>
kein MyObjectCollection ist. Das Umgekehrte ist wahr: Sie könnten eine MyObjectCollection in eine Liste umwandeln, weil MyObjectCollection von List<MyObject>
erbt und somit IS A List<MyObject>
.
Das einzige, was Sie tun können, ist einen Konstruktor auf MyObjectCollection zu definieren, die eine IEnumerable als Parameter übernehmen und initalizes selbst mit den Daten in der anderen, aber das wird ein neues Objekt mit den gleichen Daten machen:
UPDATE: Wie im Kommentar erwähnt, können Sie die Umwandlung zur Laufzeit erfolgreich sein, vorausgesetzt, dass DoSomething tatsächlich eine Instanz von MyObjectCollection zurückgibt. Wenn dies der Fall ist, ist das Objekt effektiv eine MyObjectCollection und die Besetzung ist vollständig legal.
ich sagen müsste, ist es schlechte Praxis in meiner Ansicht nach upcast so ähnlich. Wenn die Funktion eine Liste zurückgibt, sollten Sie sich nicht auf eine bestimmte Implementierung von List verlassen. Ändern Sie den Rückgabetyp von DoSomething, wenn Sie diese Funktion besitzen, und geben Sie eine MyObjectCollection zurück, oder behandeln Sie sie als Liste.
Hoppla, Hit zu schnell zu schließen. Sieht aus, als wäre es nicht das Gleiche wie normal. –
Wir brauchen ein bisschen mehr, um eine gute Antwort zu bekommen. Erhalten Sie einen Kompilierungsfehler? Was macht this.DoSomthingHere() zurück (Unterschrift und die "neue" Anweisung)? wenn ich weitere Informationen habe, werde ich mich bemühen zu antworten. –