Это не будет считаться необязательным, если это будет требоваться непосредственно методом для правильной работы.
Он должен быть явно введен как зависимость
public class SomeService {
private readonly IEventBus eventBus;
public SomeService(IEventBus eventBus) {
this.eventBus = eventBus;
}
public SomeAction() {
if (eventBus != null) {
eventBus.publish("SomeAction Happened!");
}
//...
}
}
, в противном случае рассмотримпередавая его явно методу как необязательная зависимость
public SomeAction(IEventBus eventBus = null) {
if (eventBus != null) {
eventBus.publish("SomeAction Happened!");
}
//...
}
Принцип явных зависимостей гласит:
Методы и классы должны явно требуется (обычно через параметры метода или параметры конструктора) любые взаимодействующие объекты, которые им необходимы для правильного функционирования .
выделение шахты
Внедрение IServiceProvider
обсуждается как анти-шаблон, поскольку он следует шаблону локатора службы.
Существуют некоторые исключения, например, если зависимый класс используетсятакже используется в качестве фабрики.