Frage

Ich habe einige der neueren Features in C # zu beschleunigen auf aufzustehen versucht, und einen von ihnen, dass ich nicht Gelegenheit hatte zu verwenden anonyme Typen.

Ich verstehe die Nutzung, wie es zu LINQ-Abfragen betrifft und ich schaute auf diese SO posten, die eine ähnliche Frage gestellt. Die meisten Beispiele habe ich im Netz gesehen werden LINQ-Abfragen verwandt, was cool ist. Ich sah einige etwas gekünstelt Beispiele auch, aber nicht wirklich etwas, wo ich sehr viel Wert sah.

Haben Sie eine neue Verwendung für anonyme Typen, wo Sie denken, es bietet Ihnen wirklich eine gewisse Nützlichkeit?

War es hilfreich?

Lösung

Mit ein wenig Reflexion, können Sie einen anonymen Typ in ein Wörterbuch drehen ; Roy Osherove bloggt seine Technik für diese hier: http://weblogs.asp.net/rosherove/archive/2008/03/11/turn-anonymous-types-into-idictionary-of-values.aspx

Jacob Carpenter verwendet anonyme Typen als ähnliche Weise wie unveränderliche Objekte mit Syntax zu initialisieren Initialisierung Objekt: http://jacobcarpenter.wordpress.com/2007/11/19/named-parameters-part-2/

Anonyme Typen können als Möglichkeit genutzt werden, um zu geben einfacher zu lesende Aliase auf die Eigenschaften von Objekten in einer Sammlung mit einer foreach Anweisung iteriert werden. (Obwohl, um ehrlich zu sein, das ist wirklich nichts mehr als die Standard-Anwendung von anonymen Typen mit

Andere Tipps

ASP.NET MVC Routing verwendet diese Objekte alle über den Ort.

Gelegentlich vermute ich es nützlich sein kann, etwas auszuführen, die ist wie eine LINQ-Abfrage, aber nicht passiert LINQ verwenden - aber Sie wollen immer noch einen Vorsprung von einer Art. Ich glaube nicht, dass ich in ihrer derzeitigen Form anonyme Typen radikal anders zu LINQ Projektionen für alles verwenden würde.

Eine Sache I würde gerne sehen, ist die Fähigkeit, „den Namen“ Typen mit einfachen Erklärungen zu erstellen, die die Eigenschaften und Konstrukteur in der gleichen Weise wie für anonyme Typen erzeugen würde, sowie zwingende Equals / GetHashCode / ToString in der gleichen (Nutz-) Art und Weise. Diese Typen könnten dann in „normalen“ Typen umgewandelt werden, wenn die Notwendigkeit, mehr Verhalten hinzuzufügen entstanden ist.

Noch einmal, ich glaube nicht, dass ich es oft schrecklich verwenden würde - aber jeder so oft die Möglichkeit, innerhalb von ein paar Methoden einer Klasse praktisch, vor allem wäre. Dies könnte vielleicht Teil einer größeren Anstrengung, um mehr Unterstützung zu unveränderlichen Typen in C # 5 zu geben.

, um hinzuzufügen, was Gerechtigkeit sagte, ist ASP.Net MVC der erste Ort, wo ich diese in interessante und nützliche Weise verwendet gesehen haben. Hier ist ein Beispiel:


Html.ActionLink("A Link", "Resolve", new { onclick = "someJavascriptFn();" })

ASP.Net MVC verwendet anonyme Typen wie diese auf beliebige Attribute in HTML-Elemente hinzufügen. Ich nehme an, es gibt eine Reihe von verschiedenen Möglichkeiten, wie Sie das Gleiche erreichen könnten, aber Ich mag den prägnanten Stil von anonymen Typen, es gibt Dinge mehr von einer dynamischen Sprache fühlen.

Der größte Einsatz für anonyme Typen ist LINQ in der Tat das ist, warum es erstellt wurde.

Ich denke, ein Grund für einen anonymen Typ außerhalb von Linq ist eine temporäre Struktur artiges Objekt zu erstellen, z.

var x = new { a = 1, b = 2 };

Das kann Ihr Leben ein wenig leichter in einigen Situationen machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top