Внедрение зависимостей от базового класса - PullRequest
0 голосов
/ 09 января 2019

Будет ли работать настройка DI для класса B, который имеет наследование от класса A, который, в свою очередь, реализует интерфейс I, например, так:

public interface I {
 SomeMethod();
}

public abstract class A : I {
//some code ...
}

public class B : A {
//some code...
}

Вопрос: будет ли DI работать по такой схеме, я имею в виду установку DI для класса B?

1 Ответ

0 голосов
/ 10 января 2019

Обычно контейнеры DI (такие как Castle, Unity, Autofac и т. Д.) Позволяют различать регистрацию типов и привязку интерфейса.

F.e. в Autofac вы можете зарегистрировать один тип и объявить несколько базовых классов и интерфейсов:

builder.RegisterType<B>()
       .AsSelf()
       .As<A>()
       .As<I>();

Теперь экземпляр класса B будет разрешен, когда вам потребуется интерфейс B, A или I.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...