Как сделать свой AutoMapper с нуля | На Reflection | На Expression Tree | На Source Generators

  • Видео
  • О видео
  • Скачать
  • Поделиться

Как сделать свой AutoMapper с нуля | На Reflection | На Expression Tree | На Source Generators

#DevJungles #dotnet #expressions Mappers - это такой класс библиотек, что помогает нам преобразовывать объекты, прокидывая их между слоями абстракции. Говорят, что без них или асбтракции текут или много кода писать приходится. Это не лишено правды. В любом случае, если Вы здесь, то скорее всего знаете зачем нужны мапперы, такие как AutoMapper и Mapster. Потому здесь будет не об этом. Дело в том, что мапперы сами по себе устроены довольно интересно, более того инструмментарий метапрогрммирования в .NET такой большой, что у нас сразу несколько способов их сделать со своими преимуществами и надостатками и это тоже повод поговорить об этом. В этом стриме мы построим не один клон AutoMapper, а сразу несколько используя разные подходы: на Reflection, на ExpressionTrees, на SourceGenerators, а может и другие. Смотреть его стоит для того что бы: - Узнать больше о возможностях кодогенерации и рефлексии в .NET - Увидеть решения ряда проблем, возникающих при кодогенерации - Лучше разобраться с функциями мапперов и понять почему они сделаны именно так. Telegram канал Dev Jungles - https://t.me/DevJungles Поддержать канал можно: - Спонсорством на YouTube - Переводом на карту или пополнением банки монобанка: Dev Jungles YouTube Channel Fund https://send.monobank.ua/jar/7iAP3sZkm9 Номер карты банки: 5375 4112 0230 1466 - Или криптой: Binance Id: 479881646 BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy ETH - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2 Таймкоды 0:00 - Введение 8:30 - Начало с пустого проекта ==========Reflection========== 12:30 - Самый медленный вариант с рефлексией 19:30 - Простой маппинг готов, но какие могут быть проблемы (для чего рекурсивный маппинг?) 21:40 - Решение проблем (делаем маппинг рекурсивным) 30:00 - Придумываем модель конфигурации 37:50 - Начинаем кодить конфигурацию (прописывать интерфейсы) 49:25 - Начинаем кодить билдеры конфигураций 1:00:00 - Учим наш маппер работать с конфигурацией 1:10:00 - Делаем маппинг коллекций 1:34:30 - Решаем проблему маппинга рекордов ==========Expression Tree========== 1:49:20 - Можем переходить к экспрешн маппингу (что получим от этого решения?) 1:51:55 - Разбор бенчмарка, что быстрее Expression, FastExpression, Baseline и т.д., как менялось это в разных версиях .net (почему Expression - лучший вариант на данный момент) 2:11:10 - Возвращаемся к нашим баранам (Пробуем делать маппер на Expression) ==========Source Generators========== 2:46:10 - Маппер на Source Generators (в начале про мапстер) 2:53:00 - Еще одна идея альтернативного автомапера 2:56:50 - Как делаются генераторы 3:31:00 - Unsafe для маппинга 3:19:00 - Выводы 3:23:00 - Забыл показать интересный момент в коде автомаппера
8, 028   |   2 год. назад  |   393 - 0
 

Как сделать свой AutoMapper с нуля | На Reflection | На Expression Tree | На Source Generators

Скачайте изображение (превью) выбрав качество


320x180 480x360 640x480 1280x720

#DevJungles #dotnet #expressions

Mappers - это такой класс библиотек, что помогает нам преобразовывать объекты, прокидывая их между слоями абстракции. Говорят, что без них или асбтракции текут или много кода писать приходится. Это не лишено правды.
В любом случае, если Вы здесь, то скорее всего знаете зачем нужны мапперы, такие как AutoMapper и Mapster. Потому здесь будет не об этом. Дело в том, что мапперы сами по себе устроены довольно интересно, более того инструмментарий метапрогрммирования в .NET такой большой, что у нас сразу несколько способов их сделать со своими преимуществами и надостатками и это тоже повод поговорить об этом.

В этом стриме мы построим не один клон AutoMapper, а сразу несколько используя разные подходы: на Reflection, на ExpressionTrees, на SourceGenerators, а может и другие.

Смотреть его стоит для того что бы:
- Узнать больше о возможностях кодогенерации и рефлексии в .NET
- Увидеть решения ряда проблем, возникающих при кодогенерации
- Лучше разобраться с функциями мапперов и понять почему они сделаны именно так.

Telegram канал Dev Jungles -

Поддержать канал можно:
- Спонсорством на YouTube
- Переводом на карту или пополнением банки монобанка:
Dev Jungles YouTube Channel Fund


Номер карты банки:
5375 4112 0230 1466

- Или криптой:
Binance Id: 479881646
BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy
ETH - 0x2903f63ba9009732272e91a299053b9d7b623216

USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T

LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2

Таймкоды
0:00 - Введение
8:30 - Начало с пустого проекта
==========Reflection==========
12:30 - Самый медленный вариант с рефлексией
19:30 - Простой маппинг готов, но какие могут быть проблемы (для чего рекурсивный маппинг?)
21:40 - Решение проблем (делаем маппинг рекурсивным)
30:00 - Придумываем модель конфигурации
37:50 - Начинаем кодить конфигурацию (прописывать интерфейсы)
49:25 - Начинаем кодить билдеры конфигураций
1:00:00 - Учим наш маппер работать с конфигурацией
1:10:00 - Делаем маппинг коллекций
1:34:30 - Решаем проблему маппинга рекордов
==========Expression Tree==========
1:49:20 - Можем переходить к экспрешн маппингу (что получим от этого решения?)
1:51:55 - Разбор бенчмарка, что быстрее Expression, FastExpression, Baseline и т.д., как менялось это в разных версиях .net (почему Expression - лучший вариант на данный момент)
2:11:10 - Возвращаемся к нашим баранам (Пробуем делать маппер на Expression)
==========Source Generators==========
2:46:10 - Маппер на Source Generators (в начале про мапстер)
2:53:00 - Еще одна идея альтернативного автомапера
2:56:50 - Как делаются генераторы
3:31:00 - Unsafe для маппинга
3:19:00 - Выводы
3:23:00 - Забыл показать интересный момент в коде автомаппера


Как сделать свой AutoMapper с нуля | На Reflection | На Expression Tree | На Source Generators

Чтобы скачать видео "Как сделать свой AutoMapper с нуля | На Reflection | На Expression Tree | На Source Generators" передвинте ползунок вправо



Покажите вашим друзьям, добавьте в соцсети

Ссылка на страницу с видео:

 

Ссылка HTML на страницу с видео:

 

Код для вставки плеера:


  • Комментарии

Комментарии ФБ


Уважаемые друзья!

Источником всего видеоконтента, в том числе проигрывающегося на страницах ресурса ruslar.me, является сторонний видео ресурс, а именно общедоступный видеохостинг YouTube.com, предоставляющий открытый доступ к своему видеоконтенту (используя открытую и общедоступную технологию video API3 youtube.com)!

Проблемы с авторскими правами

Если вам принадлежат авторские права на данное видео, которое было загружено без вашего согласия на YouTube.com, перейдите на страницу этого видео сайта YouTube.com , нажмите на ссылку под проигрывателем Ещё -> "Пожаловаться" -> "Нарушение моих прав" и в выпадающем меню, выбирите, что именно нарушается и нажмите кнопку "Отправить".



Неприемлемый контент

Чтобы сообщить о неприемлемом видео, перейдите на YouTube, нажмите на ссылку под проигрывателем Ещё -> "Пожаловаться" и выберите в "Сообщить о нарушении" что именно вас не устраивает в этом видео. Подробнее о наших правилах читайте в Условиях использования.