я получил крошечный интерфейс ITest:
public interface ITest
{
void DoSomething();
}
и некоторые реализации ITest
public class Test : ITest
{
public void DoSomething()
{
throw new NotImplementedException();
}
}
public class Test2 : ITest
{
public void DoSomething()
{
throw new NotImplementedException();
}
}
public class Test3 : ITest
{
public void DoSomething()
{
throw new NotImplementedException();
}
}
public class Test4 : ITest
{
public void DoSomething()
{
throw new NotImplementedException();
}
}
Теперь я настраиваю Ninject:
kernel.Bind<ITest>().To<Test>().Named("Test");
kernel.Bind<ITest>().To<Test2>().Named("Test");
kernel.Bind<ITest>().To<Test3>().Named("Test");
kernel.Bind<ITest>().To<Test4>().Named("Test");
А вот и моя первая проблема.
Если я пытаюсь получить экземпляр, используя
ITest test = kernel.Get<ITest>("Test");
это приводит к исключению "Ошибка при активации ITest. Доступно более одной соответствующей привязки. ...". Документация гласит: «Получает экземпляр указанной службы, используя первую привязку с указанным именем.»
Вторая проблема:
List<ITest> servicesList = new List<ITest>(kernel.GetAll<ITest>("Test"));
приводит к исключению «Ошибка при активации строки. Соответствующие привязки недоступны, а тип не является самосвязываемым. ...». Документация гласит: «Получает все экземпляры указанного сервиса, используя привязки, зарегистрированные с указанным именем.»
Есть идеи? Заранее спасибо!