inject<T> method

T inject<T>()

Resolves the dependency of type T.

Checks overrides first, then local bindings, and finally cascades to parent. Throws StateError if no provider or override is registered for T.

Example

final db = container.inject<DatabaseService>();

Implementation

T inject<T>() {
  if (_overrides.containsKey(T)) {
    return _overrides[T] as T;
  }

  final binding = _bindings[T];
  if (binding != null) {
    return binding.resolve() as T;
  }

  if (parent != null) {
    return parent!.inject<T>();
  }

  throw StateError(
    'BloomContainer: No provider registered for type "$T". '
    'Ensure you called `provide<$T>()` or `provideSingleton<$T>()` before resolving.',
  );
}