Я создал OrderFormViewModel, который смотрит что-то как
public class OrderFormViewModel
{
public IOrderDetails { get; set; }
public IDeliveryDetails { get; set; }
public IPaymentDetails { get; set; }
// ... etc
public SelectList DropDownOptions { get; set; }
// ... etc
}
Это переходит к моему представлению Create, куда каждый раздел (т.е. детали доставки, детали оплаты... и т.д.) затем передается частичному представлению, которое получает необходимые поля.
Я думал, что это было все довольно аккуратно, пока я не выполнил его и понял, конечно, что редактор связей модели MVC не знает, как инстанцировать любого из интерфейсов.
Существует ли способ разрешить это так или иначе?
Я также пытаюсь изучить DI с помощью контейнера Единицы, таким образом, я стараюсь не иметь ссылки на любые реальные классы в моем проекте UI (модель находится в отдельном проекте).
Одним из решений является создание пользовательской связки моделей, но этот путь означает, что вам придется потратить усилия на перевод элементов формы в свойства вашего объекта. Однако вы можете полностью контролировать, какая реализация IOrderDetails будет использоваться, например, или вы можете заставить ваш DI дать вам правильный конкретный тип, используя его конфигурацию.