У меня есть базовый класс Base с зависимостью Dep и default и Injection Constructor-
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;
}
}
Я думал, что Dependency dep должен вводиться автоматически (через Constructor Injection) при разрешении производного класса.
Но это, похоже, не работает, когда я извлекаю из него класс и разрешаю этот класс, вместо этого вызывается конструктор по умолчанию для базы.
Я могу заставить это работать только тогда, когда я явно вызываю конструктор из производного класса.
class Derived : Base
{
public Derived ()
{
Console.WriteLine("Default Constructor Derived ");
}
public Derived (IDep dep) : base(dep1)
{
Console.WriteLine("Injection Constructor Derived ");
}
}
Предоставляет ли единство какой-либо прямой способ неявного вызова конструктора внедрения базового класса (а не явным вызовом конструктора)? Если нет, то есть ли причина, по которой контейнер единства не работает сам по себе?
Base
, иDerived
содержат каждый только один конструктор, который принимает необходимые зависимости, проблема вообще не будет существовать. Однако я согласен с @BatteryBackupUnit, что наличие базового класса может быть не лучшим дизайном. - person Steven   schedule 15.09.2014