Расширять компилятор LINQ переводы - PullRequest
1 голос
/ 08 октября 2009

Есть ли способ добавить пользовательские ключевые слова linq и указать компилятору, как преобразовать их в реальные методы расширения?

Например, переведите ключевое слово single :

var color = from c in colors
            where c.IsFavorite
            select single c

К

var color = colors.Where( c => c.IsFavorite ).SingleOrDefault();

1 Ответ

2 голосов
/ 08 октября 2009

Нет, нет способа сделать это.

Что касается того, почему, я работал над реализацией VB.Net LINQ по сравнению с C #, но проблемы в основном те же.

Добавление LINQ к языку было огромным делом. Поскольку Эрик Липперт недавно опубликовал в своем блоге о , LINQ едва вписался в график VS2008, и поэтому в него были добавлены только те функции, которые были абсолютно необходимы для доставки LINQ.

Создание произвольного расширения LINQ для пользователей не было одной из этих функций. Это также то, что было бы очень дорого. Сейчас LINQ - очень сложная функция, которая имеет фиксированный набор конструкций. Если бы он был произвольно расширяемым, это сильно увеличило бы эти расходы (особенно на стороне IDE) по крайней мере в следующих областях

  • Language Design ( огромный )
  • Intellisense
  • Симпатичная печать / форматирование
  • Детали генерации кода низкого уровня
  • и т.д ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...