0

有人知道在调用构造函数之前注入属性的 IoC 容器吗?

我正在研究内部框架,我不想强​​迫人们从具有多个参数的构造函数派生来使用我的基类(它是调度程序等乏味的东西,如果我向基类添加更多内容,那么它将是更新使用该基础的每个人的代码是一项艰巨的工作)。如果在调用用户构造函数之前设置它们会更好,这样我就不必有一个单独的 OnInitialised 虚拟方法,它们可以完成依赖于这些属性的初始化。

编辑

澄清一下,我在这里想要的是属性注入等同于构造链中的字段初始化程序。

  1. 派生静态字段
  2. 派生静态构造函数
  3. 派生实例字段
  4. 基本静态字段
  5. 基础静态构造函数
  6. 基本实例字段
  7. 基实例构造函数
  8. 派生实例构造函数

即在 6.5 或 7.5 左右(虽然那会有点奇怪)

4

1 回答 1

0

根据针对问题的评论,这似乎可以满足我的需求,但我需要使用 TLS 来避免本示例中的服务定位器(我需要控制以这种方式设置的属性的范围)。

public class TestBase
{
    private SchedulerContext schedulerContext = InitScheduler();
    public SchedulerContext SchedulerContext
    {
        get { return this.schedulerContext; }
    }

    private static SchedulerContext InitScheduler()
    {
        return ServiceLocator.Current.GetInstance<SchedulerContext>();
    }

    public TestBase()
    {
        Console.WriteLine("Is Instantiated: {0}", this.SchedulerContext != null);           
    }
}

public class TestDerived : TestBase
{
    public TestDerived()
    {
        Console.WriteLine("Is Instantiated: {0}", this.SchedulerContext != null);
    }
}

这至少避免了分解语言对象构造框架的恐惧:)

于 2013-03-07T20:28:36.343 回答