
Я ненавижу AutoMapper
srogatnev 21 минуту назад Я ненавижу AutoMapper Средний 6 мин 855 Блог компании Контур .NET * C# * Программирование * Признайтесь, и вы тоже. Наверное, нет более противоречивой библиотеки в мире .NET, чем AutoMapper....
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: srogatnev 21 минуту назад Я ненавижу AutoMapper Средний 6 мин 855 Блог компании Контур . NET * C# * Программирование * Признайтесь, и вы тоже. Наверное, нет более противоречивой библиотеки в мире .
Тысячи проектов его используют, а разработчики этих проектов страдают. Страдают, когда нужно быстро ответить на вопрос: «Откуда, %$&дь, тут взялось это значение?! Ты наводишься на setter, нажимаешь на Alt+F7 и видишь то самое Usage of 'Property.
Технические детали
set' were not found:А мы точно знаем, что кто-то задаёт это свойство. Еще раз выругавшись, ты понимаешь, что это свойство устанавливает AutoMapper, идёшь искать конфигурацию…Знакомо? Пора с этим заканчивать.
TL;DRУстанавливай плагин AutoMapper. FindUsage для Rider/Resharper, он встраивается в стандартный Find Usages (Alt+F7) и показывает AutoMapper-маппинги как обычные usages — как будто никакой магии нет. Стандартное окно результатов поиска Find Usages по свойству UserDto.
Name показывает ссылку на UserModel. Как всё начиналосьДобавляя AutoMapper в проект, ты всегда идешь на сделку с совестью. Да, ты сэкономишь массу времени на генерации boilerplate-кода, новые свойства будут маппиться автоматически.
Отраслевые последствия
Но с другой стороны, ты получишь «разрыв» потока данных в проекте, когда ручеёк данных внезапно теряет прослеживаемость, т. копирование значений происходит где-то за кулисами через рефлексию. На прошлой работе я принёс AutoMapper в проект для упрощения конвертации различных моделей.
И мы начали очень плотно его использовать. До сих пор считаю, что это моё худшее инженерное решение за всю карьеру. Периодически, в разных проектах я опять начинал встречаться с этой проблемой.
В фоне я думал о том, можно ли это как-то решить. АнализаторПоднабравшись опыта с написанием Roslyn-анализаторов для поиска всяких проблемных мест в коде, я решил, что и для проблемы AutoMapper можно применить этот же инструмент. Опущу разные нюансы разработки и скажу, что у меня получилось найти все соответствия моделей и их свойств, которые описываются через метод CreateMap() и как-то их подсветить:Предупреждения компилятора.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





