В ASP.NET MVC (независимо от версии, если это важно, предположим, что я использую последний Core 2.1), мы контролируем поведение и привязку параметров приложения, аннотируя контроллер с атрибутами, например, [HttpPost]
дляметод, который должен вызываться как POST
и [FromQuery]
для параметра метода, который должен быть получен из строки запроса.
Теперь, когда я обнаружил трудный путь за последние месяцы, есть бесчисленное множество способов смешать это.Например, если у вас есть два параметра, объявленных как [FromBody]
, один всегда будет null
, потому что только один может представлять тело.Или, если ваш метод помечен [HttpGet]
, ваш [FromBody]
вернется null
, потому что стандарт говорит, что это не так, как это делается.И поверьте мне, есть еще много способов ошибиться.
Я признаю, что это все мои ошибки.Если я сделаю это правильно, это сработает.Однако меня сбивает с толку то, что это то, что можно найти во время компиляции .В этом нет никаких зависимостей времени выполнения.И я узнаю, только когда отлаживаю, и это не работает.Я понимаю, что задача компилятора не состоит в том, чтобы найти логические недостатки в моей программе, но наверняка они могут быть найдены фабрикой контроллеров при ее создании?Модульный тест, в котором все типы контроллеров я добавляю в метод тестирования?Или такой инструмент, как статический анализ кода или stylecop?
Я погуглил и нашел ноль.Так что я предполагаю, что мои навыки Google не до этого.
Действительно ли в .NET Framework нет метода, позволяющего проверить, все ли атрибуты моего контроллера складываются в нечто, что может быть правильно обслужено?Неужели нет способа сказать мне, что я все это перемешал?
И если его действительно нет, то прежде чем я сам это напишу, это по какой-то причине?Если я сам написал это, есть ли какая-то известная причина, почему нельзя этого делать?