Size: a a a

🎄.NET Talks: Evergreen🎄

2020 April 30

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Michael Snytko
Там в статье пишут что можно с этим делать, но я не понял
Ну, я тоже очевидных примеров не смог придумать или увидеть.
источник

G

Gradi in 🎄.NET Talks: Evergreen🎄
Dmitriy Bobrovskiy
А можно пару примеров применения кодогена?
Накину своих мыслей.

- Автоматическая реализация INotifyPropertyChanged(это и сейчас можно делать, но тут будет почти из коробки)
- Генерация оптимального кода для сериализации
- Генерация иммутабельных версий poco классов с методами для перегона одного в другой
Так как это по сути ваш код который выполняется во время компиляции, то можно делать что-то кроме анализа только своего кода, например,

- сходить в базу и спросить у ней актуальную схему и сгенерить класс по этой схеме
- найти все *.sql файлы в проекте и перегнать их в соответствующие классы-запросов
Ещё думаю можно часть этих вещей перегнать .
источник

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Gradi
Накину своих мыслей.

- Автоматическая реализация INotifyPropertyChanged(это и сейчас можно делать, но тут будет почти из коробки)
- Генерация оптимального кода для сериализации
- Генерация иммутабельных версий poco классов с методами для перегона одного в другой
Так как это по сути ваш код который выполняется во время компиляции, то можно делать что-то кроме анализа только своего кода, например,

- сходить в базу и спросить у ней актуальную схему и сгенерить класс по этой схеме
- найти все *.sql файлы в проекте и перегнать их в соответствующие классы-запросов
Ещё думаю можно часть этих вещей перегнать .
Хм, интересно. А есть какие-либо ссылочки хорошие на почитать по пункту "генерация иммутабельных классов", чтобы поучиться? Просто меня шарашить большое количество маппингов очень напрягает.
источник

DB

Danil Braindead in 🎄.NET Talks: Evergreen🎄
Dmitriy Bobrovskiy
А можно пару примеров применения кодогена?
Например для DSL
источник

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Danil Braindead
Например для DSL
Можно тож примерчик, если есть под рукой? Плиииз!
источник

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Если б не карантин, то пиво бы пообещал.)))
источник

DB

Danil Braindead in 🎄.NET Talks: Evergreen🎄
Dmitriy Bobrovskiy
Можно тож примерчик, если есть под рукой? Плиииз!
NDA, могу словами описать
источник

DB

Danil Braindead in 🎄.NET Talks: Evergreen🎄
Например даете пользователю создавать какие то веб сервисы, которые по описанию какого то процесса будут через код ген создаваться и далее запускаться и жить своей жизнью
источник

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Аааа
источник

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Хм, а это неплохая идея.
источник

G

Gradi in 🎄.NET Talks: Evergreen🎄
Dmitriy Bobrovskiy
Хм, интересно. А есть какие-либо ссылочки хорошие на почитать по пункту "генерация иммутабельных классов", чтобы поучиться? Просто меня шарашить большое количество маппингов очень напрягает.
Под этим я имел в виду
class Foo
{
   public int A {  get; set;  }
}

class FooImm
{
public int A { get; }

public FooImm(int a)
{
   A = a;
}

public static FooImm FromFoo(Foo foo) => new FooImm(foo.A)
}

Т.е. FooImm сам генерится и нужные методы в нём.
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
мне не понятно
уже же есть механизмы динамической кодогенерации
что изменилось?
источник

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Как вариант можно же сделать собственные реакции на события пользователю дать возможность создавать.
источник

DB

Dmitriy Bobrovskiy in 🎄.NET Talks: Evergreen🎄
Gradi
Под этим я имел в виду
class Foo
{
   public int A {  get; set;  }
}

class FooImm
{
public int A { get; }

public FooImm(int a)
{
   A = a;
}

public static FooImm FromFoo(Foo foo) => new FooImm(foo.A)
}

Т.е. FooImm сам генерится и нужные методы в нём.
Ага, понял.
источник

DB

Danil Braindead in 🎄.NET Talks: Evergreen🎄
Dmitriy Bobrovskiy
Как вариант можно же сделать собственные реакции на события пользователю дать возможность создавать.
Угу
источник

G

Gradi in 🎄.NET Talks: Evergreen🎄
Larymar neosilator
мне не понятно
уже же есть механизмы динамической кодогенерации
что изменилось?
Рефлексия во время рантайма? Это занимает время, а тут во время компиляции
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
Gradi
Рефлексия во время рантайма? Это занимает время, а тут во время компиляции
во время компиляции в IL? или JIT компиляции?
источник

G

Gradi in 🎄.NET Talks: Evergreen🎄
Gradi
Рефлексия во время рантайма? Это занимает время, а тут во время компиляции
Плюс, как я понял. Сгенерированные классы будут доступны в IntelliSense.
источник

G

Gradi in 🎄.NET Talks: Evergreen🎄
Larymar neosilator
во время компиляции в IL? или JIT компиляции?
В il. Когда кнопку собрать в студии жмёшь.
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
Gradi
В il. Когда кнопку собрать в студии жмёшь.
странная фунцкциональность
но мб я не понял всю прям перспективу
источник