c# - Inject custom object via ConstructorArgument in dependant objects -
i want inject user object principal object so:
kernel.get<iprincipal>(new constructorargument("user", user)); this concrete implementation of iprincipal constructor
public principal(user user, iuserpermissions userpermissions) { /* user correct instance, passed via constructorargument */ } up until till here have no issues. user object gets passed in fine.
but iuserpermissions not receiving object. instead ninject creates new instance of user. here concrete implementation of iuserpermissions constructor:
public userpermissions(user user, idomainrolevalidator domainrolevalidator) { /* user fresh instance, **not** 1 passed via constructorargument */ } how can work without having add new method 'setuser'?
you need scope bindings.
at present, have default binding intransientscope.. is, give new instance each time requested.
you need scope way.. perhaps 1 per request (for web):
using ninject.web.common; bind<iprincipal>().to<concreteinstancehere>().inrequestscope(); or in thread scope:
bind<iprincipal>().to<concreteinstancehere>().inthreadscope(); these give same instance, respective scopes.
Comments
Post a Comment