使 Microsoft Unity 依赖属性在构造函数中可用

Making Microsoft Unity dependency properties available in constructors

我有以下(简化的)代码:

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 添加为必需的构造函数参数,但随后我需要重构每个派生 class 的每个构造函数以也包含该参数。

我在想有没有更好的办法

简而言之,我想 运行 在构建 class 并且统一填充所有标有 class 的属性后编写一些代码 [Dependency]属性。

有没有简单的方法可以做到这一点?

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