Ho una classe che dovrà utilizzare il modello di progettazione della strategia. In fase di esecuzione mi viene richiesto di attivare e disattivare diversi algoritmi per vedere gli effetti sulle prestazioni dell'applicazione.Strategia Modello di progettazione con contenitori IOC - Ninject specificatamente
La classe in questione richiede attualmente quattro parametri nel costruttore, ognuno dei quali rappresenta un algoritmo.
Come utilizzare Ninject (o un approccio generalizzato) è possibile utilizzare lo IOC ma utilizzare lo schema di strategia?
La limitazione corrente è che il mio kernel (contenitore) è a conoscenza di ogni interfaccia dell'algoritmo, ma che può essere associato solo a una classe concreta. L'unico modo in cui riesco a vedere al momento è passare in tutti e otto gli algoritmi in costruzione, ma usare interfacce diverse, ma questo sembra del tutto inconsapevole. Non lo farei se non utilizzassi un container IOC, quindi deve esserci un modo per aggirare questo problema.
Codice esempio:
class MyModule : NinjectModule
{
public override void Load()
{
Bind<Person>().ToSelf();
Bind<IAlgorithm>().To<TestAlgorithm>();
Bind<IAlgorithm>().To<ProductionAlgorithm>();
}
}
persona ha bisogno di fare uso di entrambi gli algoritmi in modo da poter cambiare in fase di esecuzione. Ma solo TestAlgorithm è associato, poiché è il primo nel contenitore.
Questo ha funzionato. Saluti. – Finglas