Io non sono un esperto di Ninject
ma per quanto ne so, lo sto solo usando per collegare il mio DataSource Interface
e il mio EfDb Class
al resto della mia applicazione.
Se avete bisogno di un buon libro che ha un'applicazione reale costruito intorno Ninject
prova: Pro ASP.NET MVC 3 Framework, Third Edition
o
Pro Asp.Net Mvc 4
ci sono pochissime righe di codice di solito sono interessati con
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController) ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<IDataSource>().To<EfDb>();
}
}
Quindi registra il tuo NinjectControllerFactory
in Global.asax.cs
con:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
Come si può vedere, questa classe di utilizzo Method Injection
utilizzando private void AddBindings()
. Questo rende molto facile se si sta seguendo Test Driven Development (TDD)
Ma ho letto da qualche parte che se l'applicazione viene ereditata da NinjectHttpApplication e sovrascrive i metodi appropriati, i controller avranno automaticamente le dipendenze soddisfatte tramite il contenitore IOC. –
@PeterEdike Ognuno ha il proprio modo di scrivere codice, questo gioco si basa su uno stile che funziona e migliorandolo. Ti suggerirei di leggere uno di quei libri che ho menzionato. – Komengem
sì, ho già il libro. sto leggendo al momento –