Core Classes#

The library relies on two core classes:

  • ServiceCollection: class is responsible for registering services and building service provider

  • IServiceProvider: implementation is responsible for delivering real services and managing its lifetime

Examples/Guides/Basic#
#include <SevenBit/DI.hpp>
#include <iostream>

using namespace sb::di;

struct ServiceA
{
};
struct ServiceB
{
};
struct ServiceC
{
};
int main()
{
    // Service registration
    ServiceCollection services;
    services.addSingleton<ServiceA>();
    services.addSingleton<ServiceB>();
    services.addSingleton<ServiceC>();

    IServiceProvider::Ptr provider = services.buildServiceProvider();

    // Accessing services
    ServiceA &serviceA = provider->getService<ServiceA>();
    ServiceB &serviceB = provider->getService<ServiceB>();
    ServiceC &serviceC = provider->getService<ServiceC>();

    return 0;
}