So if I want to insert a session per request into the customDependencies, do I new to new up a fresh instance every time, or keep the customDependencies dictionary as a static object?
On 2 June, 17:25, Craig Neuwirt <[email protected]> wrote: > The kernel has a Resolve<T>(string key, IDictionary customDependencies) If > your service has a ctor arg ISession session, then if you add the ISession > to the customDependencies dictionary with key session, the service will use > it when resolved. > > On Tue, Jun 2, 2009 at 11:20 AM, Andyk <[email protected]> wrote: > > > Actually it seems my original problem was having IKernel as a > > dependency. > > I changed it to be IWindsorContainer and added the following line in > > global: > > container = new WindsorContainer(new XmlInterpreter()); > > container.Register(Component.For<IWindsorContainer> > > ().Instance(container)); > > > Regarding putting the session in the container, which custom > > dependencies collection do you refer to? > > > Right now I do have a problem with the container releasing the > > session: > > > public void ReleaseInstance(InstanceContext instanceContext, > > object instance) > > { > > if (session != null) > > { > > container.Release(session); > > session.Close(); > > session = null; > > } > > } > > > On Jun 2, 5:03 pm, Craig Neuwirt <[email protected]> wrote: > > > I can't remember the exact details of the NHib Facility, but it does seem > > a > > > little unusual to put the ISession in the container. WHen you resolve > > the > > > instance, may you should add the ISession in the custom dependnecies > > > collection and do a Resolve with the custom dependencies. > > > > On Tue, Jun 2, 2009 at 10:50 AM, Andyk <[email protected]> > > wrote: > > > > > Well, I think the problem is simply that Im adding a session generated > > > > by the SessionManager, into the container, but its not resolving it > > > > later on. > > > > A test case might look like: > > > > > [Test] > > > > public void Should_resolve_session_provided_by_SessionManager() > > > > { > > > > IKernel kernel = new DefaultKernel(); > > > > kernel.Register(Component.For<ITestService> > > > > ().ImplementedBy<TestService>()); > > > > > var session = sessionManager.OpenSession(); > > > > kernel.AddComponentInstance("NHibernate.Session",session); > > > > > var result = kernel.Resolve<ITestService>(); > > > > } > > > > > public class TestService:ITestService > > > > { > > > > private readonly ISession session; > > > > > public TestService (ISession session) > > > > { > > > > this.session = session; > > > > } > > > > > public void DoWork() > > > > { > > > > throw new NotImplementedException(); > > > > } > > > > } > > > > public interface ITestService > > > > { > > > > void DoWork(); > > > > } > > > > > Is this what you mean? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
