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;
}