C # 3.0 совместимость с .Net 2.0 - PullRequest
       32

C # 3.0 совместимость с .Net 2.0

4 голосов
/ 10 сентября 2009

Какие языковые функции C # 3.0 мы можем использовать в приложении, предназначенном для .Net 2.0 framework?

PS: я знаю мало таких, как лямбда-выражения и var ключевое слово

Ответы [ 2 ]

5 голосов
/ 10 сентября 2009

У меня есть статья на эту тему .

Вкратце:

Поддерживается:

  • Автоматически реализованные свойства, неявно типизированные локальные переменные и массивы, инициализаторы объектов и коллекций, анонимные типы, частичные методы, лямбда-выражения, преобразованные в типы делегатов.

Частично поддерживается:

  • Методы расширения (требуется атрибут) и выражения запроса (для использования требуется что-то вроде LINQBridge)

Не поддерживается:

  • Лямбды, преобразованные в деревья выражений

Фактически, я слышал, что преобразование в деревья выражений доступно с помощью реализации Mono System.Core. Хотя я еще не пробовал ... Я продолжаю это делать (и затем обновляю страницу).

4 голосов
/ 10 сентября 2009

Пожалуйста, смотрите здесь:

Использование синтаксиса C # 3.0 (.Net 3.5) в приложении .Net 2.0

Для полного ознакомления с тем, что вы можете и не можете делать, ориентируясь на .NET 2.0 Framework и используя C # 3.0.

В итоге:

Методы расширения работают подобным образом, однако для их работы требуется «System.Runtime.CompilerServices.ExtensionAttribute», и этот тип находится в DLL-библиотеке System.Core (которая не является строго частью .NET 2.0 рамки).

Синтаксис запроса нельзя использовать, так сказать, «из коробки», однако его можно использовать, если используется сторонняя DLL (например, LINQBridge ). Эта DLL эффективно реализует многие «недостающие» типы, которые необходимы для выполнения LINQ при нацеливании на платформу .NET 2.0. Он также реализует тип «ExtensionAttribute», необходимый для работы методов Extension, поэтому простое добавление / ссылка на DLL-библиотеку LINQBridge из вашего проекта активирует LINQ, синтаксис / выражения запросов и методы расширения!

...