我已经获得了以下(简化)代码:
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]
属性的属性。
有一种简单的方法吗?
答案 0 :(得分:1)
不是将RequiredService.DoSomething();
放在构造函数中,而是将其置于[InjectionMethod]
调用内,这样您就可以可靠地知道RequiredService
已被填充。