I have been playing around with BoundTo and thinking that may be a better 
option....

Here is an example

IWindsorContainer container = new WindsorContainer();
            
container.Register(Component.For<Container>().ImplementedBy<Container>().LifestyleTransient().OnDestroy(x
 => x.Desroyed = true),
                               
Component.For<A>().ImplementedBy<A>().LifeStyle.Transient.OnDestroy(x => 
x.Desroyed = true),
                               
Component.For<B>().ImplementedBy<B>().LifeStyle.Transient.OnDestroy(x => 
x.Desroyed = true),
                               
Component.For<C>().ImplementedBy<C>().LifestyleTransient().OnDestroy(x => 
x.Desroyed = true),
                               
Component.For<AB>().ImplementedBy<AB>().LifeStyle.BoundTo<Container>().OnDestroy(x
 => x.Desroyed = true));
 
 
            ObjectResolver.Initialise(container);
 
            var c = ObjectResolver.Resolve<Container>();
 
            Assert.AreSame(c.A.AB, c.B.AB);
 
            var s = ObjectResolver.Resolve<Container>();
 
            Assert.AreSame(s.A.AB, s.B.AB);
            Assert.AreNotSame(s.A.AB, c.A.AB);
 
            var a = ObjectResolver.Resolve<A>();
            Assert.AreNotSame(a.AB, s.A.AB);    ---- This fails.... any way 
around this ? 


Where A and B are repositories and AB is the unitofwork and container is the 
Form... based on the test it looks like that works. The only problem is if I 
want to resolve a unit of work outside of a form's context. I suspect there 
isnt a way for a lifestyle to revert to a transient lifestyle if the boundto 
fails ?


Would appreciate any thoughts on this... is BoundTo a better approach ?


On Wednesday, 5 December 2012 13:18:32 UTC+2, nst wrote:
>
> I want to use the scoped life styles in winforms in conjunction to the 
> Repository & Unit Of Work implementations with Nhibernate.
> i.e get windsor to new up the form and inject the defined repositories and 
> have them all share the same unit of work.
>
> My thinking was that I can call the begin scope prior to new'ing the form 
> and store the IDisposable and release when the form is closed. Then when 
> each form is opened a new Begin Scope is called.
>
> Does this sound viable ? There is a problem though - if form 1 is opened 
> and then form 2 is opened the latest begin scope would be owned by form 2. 
> If the resolve method was called from form 1 (say button click) then the 
> UoW would be associated with Form 2's scope ... this correct ?
>
> Are there any suggestions how I can achieve what I am trying to do ?
>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/castle-project-users/-/E5uW5LPOtZ0J.
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