Ho il seguente codice nel mio Global.aspxiniezione Proprietà a controller Base utilizzando Ninject 2
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new ServiceModule());
}
ho anche avere il seguente Ninject Modulo:
internal class ServiceModule : NinjectModule
{
public override void Load()
{
Bind<IProductService>().To<ProductService>().InRequestScope();
}
}
Ho anche un controller di base:
public class BaseController : Controller
{
[Inject]
public IProductService ProductService
{
get;
set;
}
}
Questo codice funziona. Il problema che sto avendo è che mi piacerebbe rimuovere l'attributo inject dal controller di base e specificare questo nel modulo di servizio Ninject. In altre parole, come potrei fare per scrivere una regola di binding nel ServiceModule che dice a Ninject di inserire ProductService nella proprietà nel controller di base?
Se rimuovo l'attributo, otterrò una NullReferenceException.
Ruben, puoi fornire ed esempio come farei per scrivere una regola di binding nel ServiceModule che dice a Ninject di inserire ProductService nella proprietà nel controller di base? Grazie! – Thomas
@Thomas: Non ho mai fatto una personalizzazione di questa natura (e siccome non credo che sia un buon approccio non ne ho voglia), sfortunatamente non riuscirò a trovare il tempo per farlo - scusa ... (E come la mia risposta sembra essere stata giudicata senza valore fino ad ora, perché dovrei - non è come se avessi dei feedback che la mia risposta è stata capita o corretta?) –