Tengo una clase que va a necesitar usar el patrón de diseño de estrategia. En tiempo de ejecución, debo activar y desactivar diferentes algoritmos para ver los efectos en el rendimiento de la aplicación.Patrón de diseño de estrategia con contenedores IOC - Ninject específicamente
La clase en cuestión actualmente toma cuatro parámetros en el constructor, cada uno representa un algoritmo.
¿Cómo usar Ninject (o un enfoque generalizado) podría seguir usando IOC pero usar el patrón de estrategia?
La limitación actual es que mi kernel (contenedor) conoce cada interfaz de algoritmo, pero eso solo puede vincularse a una clase concreta. La única forma de evitar esto que puedo ver en este momento es aprobar los ocho algoritmos en construcción, pero usar interfaces diferentes, pero esto parece totalmente innecesario. No haría esto si no estuviera usando un contenedor de IOC, por lo que debe haber alguna forma de evitar esto.
ejemplo Código:
class MyModule : NinjectModule
{
public override void Load()
{
Bind<Person>().ToSelf();
Bind<IAlgorithm>().To<TestAlgorithm>();
Bind<IAlgorithm>().To<ProductionAlgorithm>();
}
}
persona tiene que hacer uso de ambos algoritmos para que pueda cambiar en tiempo de ejecución. Pero solo TestAlgorithm está vinculado, ya que es el primero en el contenedor.
Esto funcionó. Aclamaciones. – Finglas