Внедрение свойства Castle Windsor IoC. Использование свойства из BaseClass внутри конструктора ChildClass

У меня есть базовый класс следующим образом

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

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

Вот как я регистрирую ISomeObject в контейнере IoC

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

person anykey3    schedule 06.12.2013    source источник
comment
Как выглядит ваша конфигурация?   -  person Steven    schedule 06.12.2013
comment
Вы имеете в виду, как я регистрирую его в контейнере IoC? Одну минуту. я отредактирую свой пост   -  person anykey3    schedule 06.12.2013


Ответы (1)


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

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

person PatrickSteele    schedule 10.12.2013