http://habrahabr.ru/company/luxoft/blog/247237/
Довольно долгое время я пытался изучить
Roslyn, но как и все мы, столкнулся с единой проблемой: времени на это абсолютно не было. Как обычно решается этот вопрос? Мы идем на множество ресурсов и ищем доклады и статьи на интересующую нас тему и как по шаблону повторяем движения автора, который показывает как этим пользоваться. С чем мы сталкиваемся, когда ищем описания тем, предложенных на CLR
ium?
Мы не находим ничего. Т.е., конечно, Google выдает что-то по запросам “Roslyn”, “Roslyn samples”, но все-таки это тысячу раз разжеванные примеры, и притом древние как мамонты по меркам выхода новых версий CTP. Это важно, т.к. наличие информации предполагает развитость той или иной инфраструктуры. А самая крутая и единственная статья по Roslyn на данный момент — это эта:
Roslyn для автоматического перевода кода C# в 1С-код
Отсюда и возникли идеи рассказать на CLR
ium про
Roslyn,
RyuJIT,
CoreFx, шаринг объектов между процессами и прочие вопросы, на которые сложно найти ответы в сети Интернет.
Итак, основные темы, которые мы готовы покрыть на докладе по Roslyn:
- Мы не будем делать вводную: в интернете все доклады – это вводные и вы их видели
- Мы разберем от простого к сложному, как устроены существующие правила в поставке Roslyn (C# 6 features). Но рассмотрим не список, как это делают на конференциях, а их исходный код
- Как только мы их рассмотрим, мы рассмотрим существующие метрики на Roslyn. Как они написаны, как строятся метрики кода.
- Далее мы напишем не просто «подсчитаем количество букв «а» во всех словах исходных текстов, мы напишем поддержку кортежей для C#:
public (int, int) ReturnCoords() { return (0, 0); }
var (x, y) = ReturnCoords();
- И сделаем Nemerle оператор match.
match (i)
{
| 1 => Console.WriteLine(1)
| 2 => Console.WriteLine(2)
| x => Console.WriteLine(x)
}
match (i)
{
| x when (x < 0) => WriteLine("negative")
| x when (x > 36) => WriteLine("more than 36")
| x when (x % 2 == 0)=> WriteLine($"valid even number $x")
| x => WriteLine($"valid odd number $x")
}
match (obj)
{
| iDisp is IDisposable => iDisp.Dispose()
| _ => ();
}
Это очень сложные примеры, которые так просто не напишешь за вечерок и это то, что вы хотите найти в сети Интернет, но не можете.
Почитать и зарегистрироваться
Контакты: