Я бы хотел отделить свои конкретные классы от моих взглядов. Без использования строго типизированных представлений, я в порядке. Я просто использую большой список параметров в сигнатурах метода контроллера, а затем использую методы фабрики моего сервисного уровня для создания моих конкретных объектов.
Это на самом деле просто прекрасно, но заставило меня задуматься, и после небольшой игры я понял, что для метода контроллера буквально невозможно принять интерфейс в качестве параметра метода - потому что у него нет способа его создания. Также нельзя создать строго типизированное представление с использованием интерфейса через IDE (что на самом деле имеет смысл).
Итак, мой вопрос. Есть ли какой-нибудь способ сообщить контроллеру, как создать экземпляр параметра интерфейса, используя мои фабричные методы уровня обслуживания?
Я хочу конвертировать из:
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
[UrlRoute(Path = "Application/Edit/{id}")]
public ActionResult Edit(String id, String TypeCode, String TimeCode, String[] SelectedSchoolSystems,
String PositionChoice1, String PositionChoice2, String PositionChoice3, String Reason, String LocationPreference,
String AvailableDate, String RecipientsNotSelected, String RecipientsSelected) {
//New blank app
IApplication _application = ApplicationService.GetById(id);
к чему-то вроде
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
[UrlRoute(Path = "Application/Edit/{id}")]
public ActionResult Edit(String id, IApplication app) {
//Don't need to do this anymore
//IApplication _application = ApplicationService.GetById(id);