Изучение

Scope и override

Local-first разрешение в дочернем Scope и явное переопределение родительских регистраций.

v0.1.0-dev.1Средний уровеньark_di

Scope и override

Дочерний контейнер сначала проверяет собственные регистрации, а затем обращается к родителю. Закрытие дочернего Scope не закрывает родительский.

dart
final preview = application.createChild((binder) {
  binder.bindInstance<CatalogRepository>(
    MemoryCatalogRepository(items),
    overrideParent: true,
  );
  binder.bindLazySingleton<CatalogService>(
    (resolver) => CatalogService(resolver.get<CatalogRepository>()),
    overrideParent: true,
  );
});

Override должен соответствовать существующей регистрации родителя. Если родительский Singleton уже получил родительский Repository, переопределение только Repository не пересоберёт consumer — его также надо переопределить в дочернем Scope.

DiKey<T>.named подходит для нескольких семантически разных конфигураций одного Dart-типа.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.