2009-09-15 3 views
1

Я успешно настроил замок windsor с помощью файла конфигурации xml, и все работает отлично. Единственная проблема заключается в том, что по методу мне нужно Виндзор, чтобы передать существующий экземпляр конструктору так я использовалWindsor AddComponentInstance problem

container.Kernel.AddComponentInstance<IMyClass>(MyClassInstance); 

до метода Resolve, но это не работает, потому что Windsor создает новый экземпляр IMyClass на основе XML файл конфигурации. Это поведение, если оно прекрасное в любом другом месте, кроме этого конкретного метода, который должен передать существующий экземпляр. Как я могу решить эту проблему. Пробовал чтобы найти документацию в Интернете, но не повезло до сих пор :(

ответ

1

Вы можете сделать это:..

var instance = new MyClass(); 
container.Register(Component.For<IMyClass>().Instance(instance)); 
+0

Не работает хорошо для меня, я хочу, чтобы обрабатывать NHibernate сессии .. и я хочу чтобы передать сеанс SQLite при тестировании (вручную созданный экземпляр), я хочу, чтобы сопоставленный сеанс с помощью файла конфигурации xml. Но его еще более сложно, потому что я хочу сломать свой уровень данных более чем одним логическим модулем и сборками, поэтому мне приходится реорганизовывать еще больше потому что теперь у меня есть два сеансовых фабрики по одному для каждого модуля данных, поэтому я использую параметры (в конфигурации windsor xml) для необходимых классов. Thanx в любом случае дал мне еще один хороший способ экспериментировать. –