Нет, я бы не стал рассматривать эту хорошую практику. Прелесть дизайна API в целом и DI в частности заключается в том, что, как только что-то начинает выглядеть странно, это должно вызывать умственную тревогу. Ключевое слово static
влияет на меня.
Как только вы начнете использовать статические свойства, нет смысла получать ваш репозиторий от Controlller - вы также можете получить его прямо из контейнера, что подразумевает антишаблон Service Locator . Как и сейчас, вы тесно связываете вашего ModelBinder с конкретным контроллером, хотя, похоже, нет причин, по которым вы захотите это сделать.
Технически, вы можете делать то, что уже делаете, но подумайте, правильное ли это место: теперь, когда у вас есть ваш элемент из хранилища, почему бы не сохранить его снова сразу? Это также технически возможно, но является серьезным нарушением принципа единственной ответственности .
Подумайте о предполагаемой ответственности ModelBinder: она должна переводить контекстную информацию HTTP / HTML (представленную в виде простого текста) в строго типизированный объект. Вот и все. Если вы пытаетесь заставить его делать больше, вы нарушаете SRP.
Обезвоживание на основе значений формы HTML / строки запроса лучше оставить самому контроллеру. Когда у Контроллера есть надлежащий Доменный объект, он может передать его в Доменную модель. Это должно быть единственной ответственностью Контролера. В большинстве случаев вам вообще не нужен ModelBinder.