Mam następujący kod w moim Global.aspxwtryskowa nieruchomości w sterowniku bazowym przy użyciu Ninject 2
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new ServiceModule());
}
Mam także następujące Ninject Moduł:
internal class ServiceModule : NinjectModule
{
public override void Load()
{
Bind<IProductService>().To<ProductService>().InRequestScope();
}
}
Mam też podstawowy kontroler:
public class BaseController : Controller
{
[Inject]
public IProductService ProductService
{
get;
set;
}
}
Ten kod działa. Problem, który mam, polega na tym, że chciałbym usunąć atrybut wstrzykiwania z kontrolera podstawowego i określić go w module usług Ninject. Innymi słowy, jak mam napisać regułę wiązania w ServiceModule, która mówi Ninject, aby wstrzyknąć ProductService do właściwości w kontrolerze bazowym?
Po usunięciu atrybutu otrzymam wyjątek NullReferenceException.
Ruben, można podać i przykład jak pójdę o pisaniu wiążącą regułę w ServiceModule który mówi Ninject wstrzyknąć ProductService do posiadłości w sterowniku bazowym? Dzięki! – Thomas
@Thomas: Nigdy nie dokonałem personalizacji tej natury (a ponieważ nie wierzę, że to dobre podejście, nie chcę), niestety nie będę w stanie poświęcić na to czasu - przepraszam ... moja odpowiedź wydaje się być nieważna jak dotąd, dlaczego miałbym - to nie jest tak, że mam jakąś opinię, że moja odpowiedź została zrozumiana lub jest prawidłowa?) –