в TargetFramework? Ведь по сути без net5 они и не будут работать
С чего бы? Сам проект с генератором может быть хоть .NET Standard.
Как я удачно зашёл) Roslyn Source Generators никогда не зависили ни от .NET 5, ни от С# 9, а только от версии компилятора, который их поддерживает. В этом можно убедиться и по официальным примерам. Чтобы быть уверенным, что генератор отработает на всех окружениях можно - либо добавить в транзитивную зависимость Microsoft.Net.Compilers.Toolset 3.8.0+, что точно подойдет не всем, особенно публичным библиотекам. - либо воспользоваться Uno.SourceGeneration, опыт использования которого я описывал тут.
Нет. Вот пример проекта реализующий сурс ген на .net standart. Работает https://github.com/Skyuzii/HarabaSourceGenerators
Когда тут мелькало - ничем не зацепила. А вот статья на хабре всё прояснила, оказалось, что тут вполне приятный кейс для Source Generators. Отличный сахар получается.
Рад, что понравилось😄
Ммм, чувак изобрел по сути property injection от которого все специально отказались
Ну как не, атрибуты, внедрение. Ну не в свойства, а в поля. Разницы ноль суть та же
Видимо вы плохо в этом разобрались) Это простой синтаксический сахар. Конструктор никуда не девается, он есть. Просто за вас это делается автоматически) Как только вы воспользовались атрибутом Inject, для него создаётся конструктор. Вы можете это заметить, попробовав инициализировать класс var cl = new Class(тут будет требовать параметры, которые вы пометили атрибутом)
вот и я так сперва подумал, а тут другое. Никаких недостатков property injection там нет, просто избавление от написания части кода руками при constructor injection в пользу кодогенерации
Отказались из-за того, что там заполнение свойств необязательное. А в его варианте всё ещё обязательное, просто избавляемся от бойлерплейта. Так что всё неплохо, на самом деле.
Обсуждают сегодня