Итак, у меня есть этот базовый c Интерфейс:
public interface ISearchable
{
List<AutocompleteResult> Search(string term);
}
И два класса, которые реализуют этот интерфейс:
Первый класс:
public class LandlordReader :ISearchable
{
public List<AutocompleteResult> Search(string term)
{
....
}
}
Второй класс :
public class CityReader : ISearchable
{
public List<AutocompleteResult> Search(string term)
{
....
}
}
С этого момента я нахожусь в темноте ... В UnityConfig.cs я пытался зарегистрировать их, дав им имя:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<ISearchable, CityReader>("City");
container.RegisterType<ISearchable, LandlordReader>("Landlord");
}
В MVC контроллере я понятия не имею, что указать (В КОНСТРУКТОРЕ) - чтобы сказать ему, что я хочу того или другого:
public LandlordController(ISearchable searcher)
{
// I want the LandlordReader here, but in the CityController, I want the CityReader....
this.searcher = searcher;
}
Я довольно нуб, Что касается DI и UnityInjector, так что полный рабочий пример был бы хорош. До этого момента я получал множество советов (используйте обобщенный c интерфейс, используйте фабрику единиц) - но пробовал их сам, ни один не работал.
Я знаю, что в ASP. NET Ядро есть атрибут Вы можете напрямую указать в списке параметров конструктора, но в настоящее время я работаю в MVC5.
Спасибо. Закончил длинный пост. Уф.