C # 3.0-Kompatibilität auf .Net 2.0
-
05-07-2019 - |
Frage
Was sind die C # 3.0 Sprachfunktionen können wir in einer Anwendung verwenden, die .NET 2.0 Framework zielt?
PS: Ich weiß, einige wie Lambda-Ausdrücke und var
Schlüsselwort
Lösung
Bitte lesen Sie hier:
Verwendung von C # 3.0 (.NET 3.5) in einer Syntax Net 2.0 Anwendung
Für eine vollständige heruntergekommenen von dem, was Sie können und nicht tun können, wenn Sie das .NET 2.0 Framework Targeting und mit C # 3.0.
Zusammenfassung:
- Sie kann nicht verwenden, um die neuen 3,5-Baugruppen (System.Data.Linq, System.Xml.Linq, System.Core).
- Sie nicht verwenden Linq / Abfrage Erweiterungen oder Erweiterungsmethoden (aber siehe unten Möglichkeiten, um die Verwendung von sowohl Linq / Abfragesyntax und Erweiterungsmethoden zu ermöglichen!).
- Sie können verwenden die Var Stichwort Lambda Aussagen , Objektinitialisierer , Anonyme Typen LINQBridge ) verwendet wird. Diese DLL effektiv neu implementiert viele der „fehlenden“ Typen, die Sie benötigen LINQ auszuführen, wenn das .NET 2.0 Framework-Targeting. Es implementiert auch den „Extension“ Typen für Erweiterungsmethoden zum Arbeiten benötigt, so einfaches Hinzufügen / Referenzierung der LINQBridge DLL aus dem Projekt ermöglicht LINQ, Abfragesyntax / Expressions und Erweiterungsmethoden!
Andere Tipps
Ich habe ein Artikel zu diesem Thema sehr rel="nofollow.
Kurz gesagt:
unterstützt:
- Automatisch Eigenschaften implementiert, implizit typisierte lokale Variablen und Arrays, Objekt- und Auflistungsinitialisierer, anonyme Typen, Teilmethoden, Lambda-Ausdrücke umgewandelt in Delegattypen.
Teilweise unterstützt:
- Erweiterungsmethoden (erfordert ein Attribut) und Abfrageausdrücke (erfordert wie LINQBridge etwas nützlich zu sein)
Nicht unterstützt:
- Lambdas umgewandelt in Expressions Bäume
In der Tat habe ich, dass die Umwandlung in Expressions Bäume gehört ist zur Verfügung mit Hilfe von Mono-Implementierung von System.Core
. Ich habe es noch nicht probiert, obwohl ... ich Sinn behalten, dies zu tun (und dann die Seite aktualisieren).