getDependencyK<T extends Object> method

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

Retrieves the underlying Dependency object.

visited is for internal cycle-detection on misconfigured hierarchies (e.g. a.parents.add(b) and b.parents.add(a)). Callers should leave it null.

Implementation

Option<Result<Dependency<T>>> getDependencyK<T extends Object>(
  Entity typeEntity, {
  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.getDependencyK(typeEntity, 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 as SupportsMixinK).getDependencyK(
        typeEntity,
        groupEntity: g,
        visited: v,
      );
      if (temp case Some()) {
        break;
      }
    }
  }
  return temp;
}