【问题标题】:Castle Windsor IoC property injection. Using property from BaseClass inside ChildClass constructorCastle Windsor IoC 属性注入。在 ChildClass 构造函数中使用 BaseClass 的属性
【发布时间】:2013-12-06 15:40:05
【问题描述】:

我有一个基类如下

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());

【问题讨论】:

  • 你的配置怎么样?
  • 你的意思是我如何在 IoC 容器中注册它?请稍等。我将编辑我的帖子

标签: c# inversion-of-control castle-windsor property-injection


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多