Posso especificar o escopo no Ninject apenas para esta situação específic
Earlier eu pergunteiessa questã. A resposta à qual resultou em outra pergunta como tu vês diante de t
O problema inicial Meu problema é que tenho um @ personalizaMembershipProvider
usando umAccountRepository
usando umObjectContext
. Porque oMembershipProvider
é umSingleton
no MVC (como eu entendo), oAccountRepository
e os seusObjectContext
deve ser injetado uma vez e permanecer lá pelo restante doMembershipProvider
tempo de vida de
No entanto, em meus controladores, também uso repositórios com contextos de objeto. Nestes controladores, preciso que o contexto do objeto seja compartilhado entre os repositórios com uma solicitação. Eu tenho a seguinte ligação:
Bind<IMyContext>().To<MyObjectContext>().InRequestScope();
// put bindings here
Bind<IAccountRepository>().To<EFAccountRepository>
E noApplication_Start()
kernel.Inject(Membership.Provider);
O problema é que aparentemente o Ninject chama descarte no contexto do objeto quando pensa que a solicitação foi concluída (acho que depois de 30 segundos
Minha solução (não está funcionando)Notei que, quando você define suas ligações, pode especificar "ao injetar". O problema é que eu preciso "ao injetar ao injetar no". I.e. quando injetar o contexto do objetopara dentr o controlador da conta quando injetar o controlador da contapara dentr o provedor de associação. E eu não pareço ter isso ...
oluções alternativas em que pensei (mas realmente não gosto Não pendureMyMembershipProvider
no MVC. Basta passar uma instância (por trás e interface) para os controladores que precisam, como eu faço com os repositórios. Em seguida, o Ninject instancia o provedor por solicitação. Não gosto, porque tenho certeza que o MVC tem um motivo para instanciar o provedor de associação como um singleto Encontre um evento que ocorra a cada solicitação e chamekernel.Inject
novamente em cada evento. Reinicializar o provedor a cada solicitação é quase equivalente a reinstalar, exceto que seja mais suj Crie um repositório de contas separado para o provedor de associação ao qual eu possa vincular de uma maneira diferente. Não parece correto alterar meu modelo de objeto por causa do NinjecConclusãIMHO, a primeira solução alternativa é a melhor. No entanto, prefiro encontrar uma maneira de definir o Ninject para vincular da maneira que eu quer
O que devo fazer