在构造函数中提供Microsoft Unity依赖项属性

时间:2017-04-06 09:22:11

标签: c# unity-container

我已经获得了以下(简化)代码:

public abstract class BaseClass
{
  [Dependency]
  public IRequiredService RequiredService { get; set; }

  protected string RequiredParameter { get; private set; }

  public BaseClass(string requiredParameter)
  {
    this.RequiredParameter = requiredParameter;
  }
}

public class DerivedClass : BaseClass
{
  public DerivedClass(string requiredParameter) : base(requiredParameter)
  {
    RequiredService.DoSomething(); //this will fail!
  }
}

换句话说,我希望能够访问构造函数中填充Unity的RequiredService ......但这是不可能的,因为该属性尚未填写通过Unity尚未。我可以添加IRequiredService作为必需的构造函数参数,但是我需要重构每个派生类的每个构造函数以包含该参数。

我想知道是否有更好的方式。

简而言之,我希望在课程建成之后运行一些代码,并且在团结完成所有课程之后#39;标有[Dependency]属性的属性。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

不是将RequiredService.DoSomething();放在构造函数中,而是将其置于[InjectionMethod]调用内,这样您就可以可靠地知道RequiredService已被填充。