Hi Fabio,I've implemented a similar concept (without the child containers) using Castle: http://blog.schuager.com/2009/03/rich-client-nhibernate-session.html I'd like to know what you think about it.
Regards. On Tue, Mar 24, 2009 at 6:27 PM, Fabio Maulo <[email protected]> wrote: > No problem, but a real functional example would be better for NH's users, > believe me. > 2009/3/24 Peter Morris <[email protected]> > >> >> Hi Fabio >> >> > Interesting.Do you have a public example ? >> >> I'm a complete newbie with NH so no :-) >> >> The implementation though would be something like >> >> var mainContainer = new UnityContainer(); >> >> //Registration of new feature >> mainContainer.AddNewExtension<HierarchicalLifetimeExtension>(); >> >> //Register repositories etc from some config, but here manually for >> illustration purposes >> mainContainer.RegisterType<ISomeBusinessProcess, SomeBusinessProcess>(new >> HierarchicalLifetimeManager()); >> >> >> >> Now let's say the constructor of ISomeBusinessProcess requires an >> IUnitOfWork, which is our context. You would do this >> >> //01: Create a child container to hold the context >> using (var childContainer = mainContainer.CreateChildContainer()) >> { >> >> //02: Register the context in the child container >> childContainer.RegisterInstance<IUnitOfWork>(new UnitOfWork()); >> >> //03: Resolve the business process in the child container. >> //This creates it and injects the IUnitOfWork we just created >> var someBusinessProcess = >> childContainer.Resolve<ISomeBusinessProcess>(); >> someBusinessProcess.Execute(); >> } >> >> Obviously this is a procedural example, the real thing wouldn't reference >> the containers directly etc. But the point is that anything the >> SomeBusinessProcess requires will be injected and will also work with the >> same IUnitOfWork instance because it is all operating within the same >> child >> container. >> >> >> Pete >> >> >> >> > > > -- > Fabio Maulo > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" 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/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
