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://commonservicelocator.codeplex.com/wikipage?title=Castle%20Windsor%20Adapter&referringTitle=Home

Больше информации здесь:

http://prashantbrall.wordpress.com/2010/11/22/service-locator-pattern-with-windsor-castle/

1 ответ

Решение

Я скучал по этому:

ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(Container));

WindsorServiceLocator доступен здесь:

http://commonservicelocator.codeplex.com/wikipage?title=Castle%20Windsor%20Adapter&referringTitle=Home

Больше информации здесь:

http://prashantbrall.wordpress.com/2010/11/22/service-locator-pattern-with-windsor-castle/

Другие вопросы по тегам