Мой сценарий заключается в следующем:Ninject контекстная Связывание во время выполнения в зависимости от конкретного значения
У меня есть интерфейс IVendor
. У меня есть три разных класса, реализующих это, давайте назовите их Vendor1
, Vendor2
, Vendor3
.
У меня есть веб-ави, который даст мне доступность продуктов поставщика. Конечно, у каждого поставщика есть свои процедуры проверки доступности, следовательно, интерфейс, который предоставляет метод CheckAvailability
.
Так что в моем вызове у меня есть что-то вроде:
public bool Get(int productId)
{
var product = GetProductByID(productId);
switch(product.VendorId)
{
case 1:
return Vendor1(CheckAvailability(product.VendorProductCode));
break;
case 2:
return Vendor2(CheckAvailability(product.VendorProductCode));
break;
case 3:
return Vendor3(CheckAvailability(product.VendorProductCode));
break;
default:
return false;
break;
}
}
Это очень упрощенно и, конечно, я не люблю его. Я хотел бы быть в состоянии назвать что-то вроде
public bool Get(int productId)
{
var product = GetProductByID(productId);
return IVendor.CheckAvailability(product.VendorProductCode)
}
и IVendor, который будет введен в то, что необходимо через Ninject. Я спрашиваю что-то сумасшедшее? Возможно ли это?
Вам необходимо использовать завод, который будет реализовывать эту логику. К сожалению, мы еще не достигли уровня, но это можно сделать концептуально. Однако заводская опция будет выполнена на более низком уровне и обеспечит правильную реализацию. – Chris
Можно ли привести пример? –
Я мог бы позже сегодня вечером .. на работе в данный момент – Chris