0

我有一个基类如下

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

并且 ChildClass 继承自 BaseClass。我需要在 ChildClass 构造函数中使用 BaseClass 中的属性,但它没有按照我的意愿由 IoC 初始化,并且值为 null。如果我在 ChildClass 的方法中使用它,Property 会被初始化。我究竟做错了什么?

这是我在 IoC 容器中注册 ISomeObject 的方法

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

1 回答 1

2

这不是 Castle Windsor 的问题,而是 .NET 的工作方式。构造函数作为 .NET 框架的一部分运行,用于实例化类的新实例。只有在构造完成后,其他代码(如 Windsor)才能在其上设置属性或执行方法。

如果您希望Property在子类构造函数中可用,则需要将其作为参数添加到BaseClass构造函数并在子类上设置匹配的构造函数。

于 2013-12-10T15:31:21.000 回答