ServiceInstanceProvider#

class ServiceInstanceProvider : public sb::di::IServiceInstanceProvider#

Subclassed by sb::di::details::ServiceInstanceProviderRoot

Public Types

using Ptr = std::unique_ptr<ServiceInstanceProvider>#

Public Functions

ServiceInstanceProvider(IServiceInstanceProviderRoot &root, ServiceProviderOptions options)#
ServiceInstanceProvider(ServiceInstanceProvider&&) = delete#
ServiceInstanceProvider(const ServiceInstanceProvider&) = delete#
ServiceInstanceProvider &operator=(const ServiceInstanceProvider&) = delete#
ServiceInstanceProvider &operator=(ServiceInstanceProvider&&) = delete#
inline const ServiceProviderOptions &getOptions() const#
virtual void init(ServiceProvider &serviceProvider) override#

Initializes instance provider.

virtual IServiceInstanceProvider::Ptr createScope() const override#

Create a scoped service instance provider.

Scoped service instance provider creates/holds its own scoped services

inline virtual const ServiceInstance &getInstance(const TypeId serviceTypeId) override#

Returns service instance reference, might throw exception.

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

Throws:

sb::di::ServiceNotFoundException

inline virtual const ServiceInstance *tryGetInstance(const TypeId serviceTypeId) override#

Returns service instance pointer.

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

inline virtual const OneOrList<ServiceInstance> *tryGetInstances(const TypeId serviceTypeId) override#

Returns service instances.

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

inline virtual ServiceInstance createInstance(const TypeId serviceTypeId) override#

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

inline virtual ServiceInstance tryCreateInstance(const TypeId serviceTypeId) override#

Creates service instance unique pointer, might be null.

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

inline virtual std::optional<OneOrList<ServiceInstance>> tryCreateInstances(const TypeId serviceTypeId) override#

Creates service instances.

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

inline virtual ServiceInstance createInstanceInPlace(const TypeId serviceTypeId) override#

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

inline virtual ServiceInstance tryCreateInstanceInPlace(const TypeId serviceTypeId) override#

Creates service instance in place.

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

inline virtual const ServiceInstance &getKeyedInstance(const TypeId serviceTypeId, const std::string_view serviceKey) override#

Returns service instance reference, might throw exception.

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

Throws:

sb::di::ServiceNotFoundException

inline virtual const ServiceInstance *tryGetKeyedInstance(const TypeId serviceTypeId, const std::string_view serviceKey) override#

Returns service instance pointer.

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

inline virtual const OneOrList<ServiceInstance> *tryGetKeyedInstances(const TypeId serviceTypeId, const std::string_view serviceKey) override#

Returns service instances.

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

inline virtual ServiceInstance createKeyedInstance(const TypeId serviceTypeId, const std::string_view serviceKey) override#

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

inline virtual ServiceInstance tryCreateKeyedInstance(const TypeId serviceTypeId, const std::string_view serviceKey) override#

Creates service instance unique pointer, might be null.

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

inline virtual std::optional<OneOrList<ServiceInstance>> tryCreateKeyedInstances(const TypeId serviceTypeId, const std::string_view serviceKey) override#

Creates service instances.

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

inline virtual ServiceInstance createKeyedInstanceInPlace(const TypeId serviceTypeId, const std::string_view serviceKey) override#

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

inline virtual ServiceInstance tryCreateKeyedInstanceInPlace(const TypeId serviceTypeId, const std::string_view serviceKey) override#

Creates service instance in place.

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