2009-10-07 3 views
1

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

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

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

Для

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

ответ

2

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

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

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

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

  • Язык дизайна (огромный)
  • Intellisense
  • Довольно печать/Форматирование
  • код низкий уровень испускают детали
  • и т.д ...
+0

:) Короткий и простой ответ я Угадай. Любая конкретная информация о том, почему нет? Является причиной того, что компилятор является закрытым источником, конкретным ограничением в стандартах C# и т. Д.? –

+0

@Paul, добавил краткое объяснение, почему. – JaredPar

+0

Спасибо за отличную обратную связь! –