liarsdice::di namespace

Dependency injection framework.

The di namespace provides a lightweight DI container:

  • Service registration and resolution
  • Lifetime management
  • Type-safe service access
  • Configuration injection
  • Testing support with mock services

Namespaces

namespace testing

Classes

class ServiceContainer
class ServiceContainerException

Enums

enum class ServiceLifetime { Transient, Singleton, Scoped }

Typedefs

template<typename T>
using ServiceFactory = std::function<std::shared_ptr<T>()>
using injector_config = di::config
template<typename T>
using shared = std::shared_ptr<T>
template<typename T>
using unique = std::unique_ptr<T>

Functions

auto get_service_container() -> ServiceContainer&
auto operator<<(std::ostream& os, ServiceLifetime lifetime) -> std::ostream&
template<typename T, typename... Args>
auto make_factory() -> auto
template<typename Interface, typename Implementation>
auto bind_interface() -> auto
template<typename Interface, typename Implementation>
auto bind_singleton() -> auto
template<typename T>
auto bind_instance(std::shared_ptr<T> instance) -> auto
template<typename... Bindings>
auto make_injector(Bindings && ... bindings) -> auto

Variables

auto singleton constexpr
auto unique_scope constexpr

Enum documentation

enum class liarsdice::di::ServiceLifetime

Typedef documentation

template<typename T>
using liarsdice::di::ServiceFactory = std::function<std::shared_ptr<T>()>

using liarsdice::di::injector_config = di::config

template<typename T>
using liarsdice::di::shared = std::shared_ptr<T>

template<typename T>
using liarsdice::di::unique = std::unique_ptr<T>

Function documentation

std::ostream& liarsdice::di::operator<<(std::ostream& os, ServiceLifetime lifetime)

template<typename T, typename... Args>
auto liarsdice::di::make_factory()

template<typename Interface, typename Implementation>
auto liarsdice::di::bind_interface()

template<typename Interface, typename Implementation>
auto liarsdice::di::bind_singleton()

template<typename T>
auto liarsdice::di::bind_instance(std::shared_ptr<T> instance)

template<typename... Bindings>
auto liarsdice::di::make_injector(Bindings && ... bindings)

Variable documentation

auto liarsdice::di::singleton constexpr

auto liarsdice::di::unique_scope constexpr