5

Я создал OrderFormViewModel который выглядит примерноMVC модель привязки к интерфейсам

public class OrderFormViewModel 
{ 
    public IOrderDetails { get; set; } 
    public IDeliveryDetails { get; set; } 
    public IPaymentDetails { get; set; } 
    // ... etc 

    public SelectList DropDownOptions { get; set; } 
    // ... etc 

} 

Это идет в мой Создание зрения, где каждая секция (т.е. детали доставки, платежные реквизиты ... и т.д.) затем передается на частичный вид, который фиксирует необходимые поля.

Я думал, что все это было довольно аккуратно, пока я не запустил его и, конечно же, понял, что связующее устройство MVC не знает, как создать экземпляр любого из интерфейсов.

Есть ли способ решить это как-то?

Я также пытаюсь изучить DI, используя контейнер Unity, поэтому я стараюсь избегать ссылок на какие-либо конкретные классы в моем проекте пользовательского интерфейса (модель находится в отдельном проекте).

ответ

5

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

Смежные вопросы