我有一个基类Base,它依赖于Dep并具有默认和注入构造函数 -
Class Base : IBase
{
public IDep Dep { get; set; }
public Base()
{
Console.WriteLine("Default Constructor Base ");
}
[InjectionConstructor]
public Base(IDep dep)
{
Console.WriteLine("Injection Constructor Base ");
Dep = dep;
}
}
当我解析派生类时,我认为依赖项dep应该自动注入(通过构造函数注入)。
但是当我从它派生一个类并解析该类时,似乎这不起作用,而是调用了基类的默认构造函数。
只有在我从派生类显式地调用构造函数时,才能使它正常工作。
class Derived : Base
{
public Derived ()
{
Console.WriteLine("Default Constructor Derived ");
}
public Derived (IDep dep) : base(dep1)
{
Console.WriteLine("Injection Constructor Derived ");
}
}
Unity是否提供任何直接的方式来隐式调用基类的注入构造函数(而不是通过显式构造函数调用)? 如果没有,那么为什么Unity容器自己不这样做?
Base
和Derived
都只包含一个接受所需依赖项的构造函数,那么问题根本不存在。然而,我同意@BatteryBackupUnit的观点,拥有一个基类可能不是最好的设计。 - Steven