У меня есть класс, который будет использовать шаблон разработки стратегии. Во время выполнения мне необходимо включать и выключать различные алгоритмы, чтобы увидеть влияние на производительность приложения.
Рассматриваемый класс в настоящее время принимает в конструкторе четыре параметра, каждый из которых представляет алгоритм.
Как с помощью Ninject (или обобщенного подхода) я мог бы по-прежнему использовать IOC, но использовать шаблон стратегии?
Текущее ограничение заключается в том, что мое ядро (контейнер) знает о каждом интерфейсе алгоритма, но может быть привязано только к одному конкретному классу. На данный момент я вижу единственный способ обойти это - передать все восемь алгоритмов при построении, но использовать разные интерфейсы, но это кажется совершенно ненужным. Я бы не стал этого делать, если бы не использовал контейнер IOC, поэтому должен быть какой-то способ обойти это.
Пример кода:
class MyModule : NinjectModule
{
public override void Load()
{
Bind<Person>().ToSelf();
Bind<IAlgorithm>().To<TestAlgorithm>();
Bind<IAlgorithm>().To<ProductionAlgorithm>();
}
}
Человеку необходимо использовать оба алгоритма, чтобы я мог переключаться во время выполнения. Но привязан только TestAlgorithm, так как он первый в контейнере.