getDependency<T extends Object> method

Option<Result<Dependency<T>>> getDependency<T extends Object>({
  1. Entity groupEntity = const DefaultEntity(),
  2. bool traverse = true,
  3. Set<DI>? visited,
})

Retrieves the underlying Dependency object from the registry.

visited is for internal cycle-detection — see isRegistered.

Implementation

Option<Result<Dependency<T>>> getDependency<T extends Object>({
  Entity groupEntity = const DefaultEntity(),
  bool traverse = true,
  Set<DI>? visited,
}) {
  final v = visited ?? <DI>{};
  if (!v.add(this as DI)) return const None();
  final g = groupEntity.preferOverDefault(focusGroup);
  final option = registry.getDependency<T>(groupEntity: g);
  var temp = option.map((e) => Ok(e).transf<Dependency<T>>());
  if (option case None() when traverse) {
    for (final parent in parents) {
      temp = parent.getDependency<T>(
        groupEntity: g,
        visited: v,
      );
      if (temp case Some()) {
        break;
      }
    }
  }
  return temp;
}