If you implement repositories using a generic type T, you can use a simple resolving technic in Castle Windsor. Instead of specifying every type like:
1: Container.Register(Component.For<IRepository<Service>>() 2: .ImplementedBy<NHibernateRepository<Service>>()); 3: Container.Register(Component.For<IRepository<Employee>>() 4: .ImplementedBy<NHibernateRepository<Employee>>() 5: .LifeStyle.Transient);But the is a more simple approach where you don´t have to specify each actual implementation, where you just tell Windsor that it is a generic type:
1: Container.Register(2: Component.For(typeof (IRepository<>))
3: .ImplementedBy(typeof (NHibernateRepository<>))
4: .LifeStyle.Transient);And you just saved yourself from a lot of typing. But keep in mind that people might request just anything the want, so to keep in control of what should accepted you might shield your implementation with a “…: Where T….” to encapsulate which types should be accepted.
No comments:
Post a Comment