C# Source Generators — Write code that writes code / Генераторы кода C#: пишем код, который будет писать код

17 октября, 14:00

Key ideas

Generating source code is not a new technology, and there are lots of different offerings out there available for you to use, or that you may in fact be using right now. Tools like PostSharp, Fody, CodeSmith, and many, many more. What is new however, with C# 9 and .NET 5, is a formal source generation offering from Microsoft, taking advantage of a unique opportunity that only the Roslyn team can provide, that lets you run your generator inside the compiler pipeline, with access to the internal data structures the compiler produces.

In this session we’ll cover source generators in general, deep dive into the C# 9 offering, and then run through some examples, talk about the possibilities, and leave you with no shortage of ideas for your own generators that you can run wild with. When all you have is a hammer, everything looks like a nail, and with source generators in your toolbelt, you won’t look at that slow old reflection code the same way ever again.


Тезисы

Технология генерации исходного кода не нова. Для этого есть много разных инструментов: PostSharp, Fody, CodeSmith и т. д. Какими-то из них вы, может быть, пользуетесь сейчас. Но кое-что новое все же появилось — вместе с выпуском C# 9 и .NET 5, благодаря работе команды Roslyn, Microsoft предоставила официальную возможность использовать генераторы кода. Такой генератор может выполняться во время компиляции, имея доступ к внутренним структурам данных, которые создает компилятор.

В этом докладе мы рассмотрим генераторы кода в целом и более подробно генератор C# 9, пройдемся по примерам и поговорим о возможностях, так что к концу доклада у вас появится множество идей для создания собственных генераторов. Зная, как использовать эти инструменты, вам скорее всего захочется применять их снова и снова, а старый и медленный процесс рефлексии предстанет в другом свете.

Презентация (на Я.Диске)

 

Доступ к записям выступлений DotFest платный.

 

Купить доступ 5 900 ₽

 

Или залогиньтесь, если уже куплено.

Microsoft

David Wengier

David is a developer at Microsoft, working on Roslyn, also known as the C#/VB compiler and IDE tools, in Visual Studio. A developer for the last 20 years, David has had experience in lots of different languages and environments, from cgi-bin scripts in Perl, to genetic algorithms in VB3, and Windows applications in COBOL. A series of terrible decisions, clearly, but he learnt in the end and now spends most of his time developing with .NET in C#, and enabling other developers to do the same. David is mostly interested in C#, good design and Lego Technic and Creator Expert cars. He can be found tweeting at @davidwengier, streaming at https://twitch.tv/davidwengier, helping to organize the DDD Melbourne conference, and on about a dozen different slacks and discords.


Дэвид работает в Microsoft над проектом Roslyn (включает в себя IDE-инструменты и компилятор C#/VB) как части Visual Studio. Последние 20 лет Дэвид разрабатывал ПО, работал с разными языками и средами, от cgi-bin скриптов на Perl до генетических алгоритмов на VB3 и приложений для Windows на COBOL. Пройдя такой насыщенный жизненный путь, в конце концов он избрал разработку на C# в платформе .NET и помогает другим в этом деле. В основном Дэвид интересуется C#, хорошим дизайном и моделями машин Lego Technic и Lego Creator Expert. Его аккаунт в Твиттере —@davidwengier, канал на Twitch — https://twitch.tv/davidwengier. Он часто пользуется Slack и Discord, а также участвует в организации конференции DDD Melbourne.

David is a developer at Microsoft, working on Roslyn, also known as the C#/VB compiler and IDE tools, in Visual Studio. A developer for the last 20 years, David has had experience in lots of different languages and environments, from cgi-bin scripts in Perl, to genetic algorithms in VB3, and Windows applications in COBOL. A series of terrible decisions, clearly, but he learnt in the end and now spends most of his time developing with .NET in C#, and enabling other developers to do the same. David is mostly interested in C#, good design and Lego Technic and Creator Expert cars. He can be found tweeting at @davidwengier, streaming at https://twitch.tv/davidwengier, helping to organize the DDD Melbourne conference, and on about a dozen different slacks and discords.


Дэвид работает в Microsoft над проектом Roslyn (включает в себя IDE-инструменты и компилятор C#/VB) как части Visual Studio. Последние 20 лет Дэвид разрабатывал ПО, работал с разными языками и средами, от cgi-bin скриптов на Perl до генетических алгоритмов на VB3 и приложений для Windows на COBOL. Пройдя такой насыщенный жизненный путь, в конце концов он избрал разработку на C# в платформе .NET и помогает другим в этом деле. В основном Дэвид интересуется C#, хорошим дизайном и моделями машин Lego Technic и Lego Creator Expert. Его аккаунт в Твиттере —@davidwengier, канал на Twitch — https://twitch.tv/davidwengier. Он часто пользуется Slack и Discord, а также участвует в организации конференции DDD Melbourne.

Другие спикеры: