Hinzufügen von verschiedenen Objekt-Typen, um eine c# 4.0 Sammlung
Habe ich eine Funktion zurückgibt, die Objekte von verschiedenen Typen auf der Grundlage der parameter an diese Funktion übergeben.
Ist es möglich, diese verschiedenen Objekt-Typen, um eine Auflistung basiert auf eine id, in C# 4.0?
Wir tun meistens so etwas wie dieses
Liste oder Liste
aber ich will eine Sammlung, die das Objekt eines beliebigen Typs.
Ist der Rückgabetyp der Funktion-Objekt (oder ein interface, dass alle Objekt-Typen es gibt umzusetzen)?
InformationsquelleAutor SharpD | 2010-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstelle von nur macht
List<object>
wie andere Plakate sind zu empfehlen, Sie definieren eine Schnittstelle, z.B.IListableObject
enthält einige Methoden, die Ihre Objekte implementieren müssen. Damit wird jeder code, der die Verwendung dieser Objekte viel einfacher zu schreiben und zu schützen gegen unerwünschte Objekte immer in die Sammlung auf der ganzen Linie.InformationsquelleAutor James Westgate
Ja, es heißt
object
. Eg:InformationsquelleAutor leppie
Könnten Sie
object[]
,List<object>
, ArrayList, IEnumerable, ... aber wenn diese Typen haben eine gemeinsame Basis zu geben es besser wäre, zu bleiben, um eine stark typisierte Auflistung.+1 habe Sie in der vor mir da 🙂
InformationsquelleAutor Darin Dimitrov
Wirklich Ihre Sammlung sollte so spezifisch wie können Sie es machen. Wenn Sie sagen,
Haben diese Gegenstände etwas gemeinsam haben? Sie implementieren ein gemeinsames interface?
Wenn so, Sie können sich in der Liste auf, dass-Schnittstelle
List<IMyInterface>
Sonst
List<object>
wird tun, was Sie wollen.Update
Nein, nicht wirklich.
Tut mir Leid, aber ich werde die Frage nach Ihrem design.
Wenn Sie eine Sammlung von verschiedenen Gegenständen, wie Sie sich entscheiden, wie man die Objekte an?
Sie gehen zu einem großen switch-Anweisung einschalten der Typ des Objekts, dann wirkst du auf ein bestimmtes Objekt und verwenden Sie es.
Haben Sie auch einen ähnlichen switch-Anweisung in der factory-Methode erzeugt das Objekt.
Einer der Vorteile der Objektorientierung ist, dass, wenn Sie entwerfen Sie Ihre Objekte richtig, dann brauchen Sie nicht zu tun, diese große "Wenn es dieses Objekt zu tun.Methode(), wenn es das Objekt tun.OtherMethod()".
Darf ich Fragen, warum bringen Sie verschiedene Objekte in derselben Sammlung? Was ist der nutzen für Sie?
InformationsquelleAutor Binary Worrier
Wenn Sie möchten, eine Sammlung, die das hinzufügen von Objekten eines beliebigen Typs dann
List<object>
ist der am besten geeignete Typ.InformationsquelleAutor JaredPar
Sammlungen, die in früheren Versionen von C# (nicht Generika) enthalten kann jede Art von Objekten. Wenn Sie Wert geben, Sie wird boxed in-Objekt.
Wenn Sie brauchen, um Sie zu benutzen, Sie können nur wirken, zu dem ursprünglichen Typ.
Können Sie verwenden
List<Type>
zu halten, die Art von Informationen, wenn das, was Sie wollen. Und Geben Sie[], Hashtable, etc.. sind auch in Ordnung. Sie können typeof-operator, um den Typ oder Objekt verwenden.GetType().InformationsquelleAutor LLS
Schauen Sie sich auch Dynamische Typ.
http://msdn.microsoft.com/en-us/library/dd264736.aspx
Wird es im Grunde das gleiche tun.
InformationsquelleAutor Faruz
Mein Vorschlag:
Verwenden param-Klasse als collectio, um Ihre Werte, können Sie konvertieren die Rückkehr zu jeder Art Sie wollen.
InformationsquelleAutor syb
Könnten Sie verwenden ein Tupel von Genric Arten
https://msdn.microsoft.com/en-us/library/system.tuple(v=vs. 100).aspx
InformationsquelleAutor Duanne