0

У меня есть базовый класс, как следующийЗамок Виндзор IoC собственности инъекции. Используя свойство из BaseClass внутри ChildClass конструктора

public class BaseClass 
{ 
    public ISomeObject Property { get; set; } 
} 

и ChildClass унаследовал от BaseClass.I нужно использовать свойство из BaseClass внутри ChildClass конструктора, но это не инициализируется IoC, как я хочу, и имеет значение null. И если я использую его в методах ChildClass, свойство инициализируется. Что я делаю неправильно?

Вот как зарегистрировать ISomeObject в IoC контейнер

container.Register(
Component.For<ISomeObject>() 
.ImplementedBy<WebSomeObject>().LifestyleSingleton()); 
+0

Как выглядит ваша конфигурация? – Steven

+0

Вы имеете в виду, как я зарегистрирую его в контейнере IoC? Минуточку. Я отредактирую свое сообщение – anykey3

ответ

2

Это не проблема с замок Виндзор, но пути .NET работает. Конструктор запускается как часть среды .NET, создавая экземпляр нового экземпляра класса. Только после завершения строительства другой код (например, Windsor) устанавливает на нем свойства или выполняет методы.

Если вы хотите, чтобы Property был доступен внутри конструктора дочернего класса, вам необходимо добавить его в качестве параметра в конструктор BaseClass и настроить соответствующий конструктор для вашего дочернего класса.

+0

спасибо за ответ. Я уже выяснил, что – anykey3