CastleWindsor + NHibernate + NCommon IRepository: как автоматически зарегистрироваться?
Я пытаюсь автоматически зарегистрировать сущности NHibernate, поскольку NCommon IRepository использует Castle, и я не могу понять это.
В предыдущем проекте мы использовали autofac, и вот как мы это сделали:
autofacContainerBuilder.RegisterGeneric(typeof (NHRepository<>))
.As(typeof (IRepository<>))
.InstancePerLifetimeScope();
Есть ли эквивалент для Касла? Спасибо!
РЕДАКТИРОВАТЬ:
Это как можно ближе, но ComponentActivator не удается создать экземпляр NHRepository:
.Register(Component.For(typeof(IRepository<>))
.ImplementedBy(typeof(NHRepository<>))
.LifeStyle.Transient)
ComponentActivator не удалось создать экземпляр NCommon.Data.NHibernate.NHRepository
Самостоятельно взрывается вручную:
NHRepository<MyEntity> blah = new NHRepository<MyEntity>();
с:
* Ссылка на объект не указана для экземпляра объекта в Microsoft.Practices.ServiceLocation.ServiceLocator.get_Current() в c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocator.cs: строка 17*
РЕШИТЬ:
Я скучал по этому:
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(Container));
WindsorServiceLocator доступен здесь:
Больше информации здесь:
http://prashantbrall.wordpress.com/2010/11/22/service-locator-pattern-with-windsor-castle/
1 ответ
Я скучал по этому:
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(Container));
WindsorServiceLocator доступен здесь:
Больше информации здесь:
http://prashantbrall.wordpress.com/2010/11/22/service-locator-pattern-with-windsor-castle/