У меня есть несколько компонентов, зарегистрированных в моем контейнере, и Windsor может вводить их без проблем. Теперь я добавил новую регистрацию для NHibernate ISessionFactory таким образом:Компоненты замка Windsor «Late bound»
foreach (KeyValuePair<string, string> _tenantItem in _contextWrapper.TenantsConnectionStrings)
{
var config = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008
.UseOuterJoin()
.ConnectionString(_tenantItem.Value)
.FormatSql()
.ShowSql()
)
.ExposeConfiguration(ConfigurePersistence)
.ProxyFactoryFactory(typeof(ProxyFactoryFactory))
.BuildConfiguration();
Kernel.Register(
Component.For<ISessionFactory>()
.UsingFactoryMethod(config.BuildSessionFactory)
.Named(_tenantItem.Key)
.LifestyleTransient()
);
}
Теперь, если я стараюсь, чтобы проверить мой контейнер, я вижу:
Компонент реализация является «Late оценки» и Виндзор не будет вводить его.
Что случилось? Что я могу проверить?
Может ли конфигурация (FluentConfiguration) фактически не зарегистрирована в контейнере? Вызов метода фабрики Fluently.Configure() будет похож на создание нового компонента, который не управляется контейнером? –
нет.неважно, зарегистрировано ли оно. Я никогда не регистрирую его –
@ KrzysztofKozmic не могли бы вы взглянуть на это: http://stackoverflow.com/questions/25064516/dependency-injection-lifestyle-service-shared-instance-between-2-instances-of? noredirect = 1 # comment39052582_25064516 –