Привязка модели MVC к интерфейсам

Я создал 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 (модель находится в отдельном проекте).

6
задан Scott Lawrence 6 April 2012 в 21:15
поделиться

1 ответ

Одним из решений является создание пользовательской связки моделей, но этот путь означает, что вам придется потратить усилия на перевод элементов формы в свойства вашего объекта. Однако вы можете полностью контролировать, какая реализация IOrderDetails будет использоваться, например, или вы можете заставить ваш DI дать вам правильный конкретный тип, используя его конфигурацию.

6
ответ дан 16 December 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: