Так как у вас есть открытое свойство с помощью Setter, каждый раз, когда вы разрешаете свой объект из Windsor, он также будет пытаться установить любые открытые свойства с соответствующими значениями из контейнера (в вашем случае, ILogger, в который будет добавлено ваше средство Windsor).
Значение, если вы разрешите Класс из Виндзора, это будет установлено. Но нет, если вы делаете новый класс ().
Это по крайней мере, как я понимаю.
Другой подход заключается в использовании конструкторов, то есть, если у вас есть конструктор с именем
открытый класс (регистратор ILogger), он будет создан с параметром ILogger.
Пример:
var yourClassObject = Kernel.Resolve<IClass>();
Если у вас нет спецификации интерфейса (и не зарегистрированы как таковой), вам необходимо зарегистрировать свой компонент как конкретный тип, если вы хотите разрешить его, используя этот конкретный тип (а не по интерфейсу).