IServiceInstanceProvider#

struct IServiceInstanceProvider#

Subclassed by sb::di::details::core::ServiceInstanceProvider

Public Types

using Ptr = std::unique_ptr<IServiceInstanceProvider>#

Public Functions

virtual void init(ServiceProvider &serviceProvider) = 0#

Initializes instance provider.

virtual const ServiceProviderOptions &getOptions() const = 0#

Get service provider options.

virtual Ptr createScope() const = 0#

Create a scoped service instance provider.

Scoped service instance provider creates/holds its own scoped services

virtual const IServiceInstance &getInstance(TypeId serviceTypeId) = 0#

Returns service instance reference, might throw exception.

If service was not registered or was registered as transient, method throws exception

Throws:

sb::di::ServiceNotFoundException

virtual const IServiceInstance *tryGetInstance(TypeId serviceTypeId) = 0#

Returns service instance pointer.

If service was not registered or was registered as transient, method returns null

virtual const OneOrList<IServiceInstance::Ptr> *tryGetInstances(TypeId serviceTypeId) = 0#

Returns service instances.

If service instance was not registered or was registered as transient, method returns null

virtual IServiceInstance::Ptr createInstance(TypeId serviceTypeId) = 0#

Creates service instance unique pointer, might throw exception.

If service was not registered or was registered as scoped/singleton, method throw exception

Throws:

sb::di::ServiceNotFoundException

virtual IServiceInstance::Ptr tryCreateInstance(TypeId serviceTypeId) = 0#

Creates service instance unique pointer, might be null.

If service was not registered or was registered as scoped/singleton, method returns null

virtual IServiceInstance::Ptr createInstanceInPlace(TypeId serviceTypeId) = 0#

Creates service instance in place, might throw exception.

If service was not registered or was registered as scoped/singleton, method throws exception

Throws:

sb::di::ServiceNotFoundException

virtual IServiceInstance::Ptr tryCreateInstanceInPlace(TypeId serviceTypeId) = 0#

Creates service instance in place.

If service was not registered or was registered as scoped/singleton, method returns null

virtual std::optional<OneOrList<IServiceInstance::Ptr>> tryCreateInstances(TypeId serviceTypeId) = 0#

Creates service instances.

If service was not registered or was registered as scoped/singleton, method returns null option

virtual ~IServiceInstanceProvider() = default#