В приложениях WinForm MVC, которые я построил, я обычно не позволяю контроллеру создавать какие-либо экземпляры (я пытаюсь сохранить «новое» ключевое слово из своих контроллеров).
Если мне нужен объект, я запрашиваю у него сервис, и внутренне эта служба собирается извлечь этот объект из источника данных (репозитория или тому подобного), или, в случае нового объекта, он, вероятно, будет использовать некоторые чтобы получить мне новый объект (с любыми необходимыми предварительно заполненными свойствами, уже установленными для значений по умолчанию, запусками правил и т. д.).
Способ, которым мне нравится думать об этой проблеме, заключается в следующем: как бы я мог сделать эту работу (и сделать ее многоразовой), если у меня не было графического интерфейса для представления, но вместо этого был введен в командной строке для моего взгляда? Логика создания/добавления/удаления/обновления модели должна быть где-то в вашем домене, а не в контроллере. Тогда контроллер просто становится посредником между моделью и представлением. Представление становится механизмом ввода-вывода, который является лишь более красивой версией интерфейса командной строки.
Надеюсь, что имеет смысл.
Я бы хотел, но на данный момент я застрял в Studio 2005 и WinForms. Я предполагаю, что вопрос - довольно общий MVC, но я хотел бы знать лучшую практику C#. – 2009-03-03 18:50:51