Я могу вспомнить три причины, по которым не используется динамический тип:
- Из соображений безопасности.Пожалуйста, изучите JSON Injection.Раньше это было проблемой для некоторых маршаллеров.Tldr динамика облегчает удаленное выполнение кода. Вот пример с дополнительными значениями
Следующие два являются более общими, не совсем применимыми к вашей реализации.
Позже, когда проект будет расти, у вас будут проблемы с запоминанием того, какие данные принимает контроллер.Если он является частью микросервисной архитектуры, он будет нарушать чтение кода, так как у вас не будет никаких намеков на то, что может отправлять данные на него (что было бы возможно при использовании DTO для всего приложения, VS показывал бы вам ссылки)
Некоторые ошибки перемещаются во время выполнения, например, опечатка в некотором методе доступа к полям, которая будет обнаружена компилятором, если будет использоваться dto, что приведет к аварийному завершению приложения во время выполнения с динамическим типом.
Мой совет - максимально сократить использование динамического типа.C # статически типизирован, так зачем отказываться от него?