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
-~----------~----~----~----~------~----~------~--~---

Reply via email to