DotNetDupe
4.0.6
C++17/20 Implementation of the .NET Base Class Library (BCL)
Toggle main menu visibility
Loading...
Searching...
No Matches
ServiceProvider.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
System/IServiceProvider.h
"
4
#include "
System/IO/IDisposable.h
"
5
#include "
System/Threading/CriticalSection.h
"
6
#include "
Extensions/DependencyInjection/IServiceCollection.h
"
7
#include "
Extensions/DependencyInjection/ServiceDescriptor.h
"
8
#include "
Extensions/DependencyInjection/IServiceScopeFactory.h
"
9
#include <typeindex>
10
11
namespace
DotNetDupe
{
12
namespace
Extensions
{
13
namespace
DependencyInjection
{
14
20
class
ServiceProvider
:
public
DotNetDupe::System::IServiceProvider
,
public
DotNetDupe::System::IO::IDisposable
{
21
public
:
24
DOTNETDUPE_API
ServiceProvider
(
const
IServiceCollection
& collection);
25
28
DOTNETDUPE_API
ServiceProvider
(
ServiceProvider
* pRootProvider);
29
31
DOTNETDUPE_API
~ServiceProvider
()
override
;
32
36
DOTNETDUPE_API
DotNetDupe::System::SmartPointer<DotNetDupe::System::Object>
GetService
(
const
std::type_index& serviceType)
override
;
37
39
DOTNETDUPE_API
void
Dispose
()
override
;
40
41
private
:
42
DotNetDupe::System::SmartPointer<DotNetDupe::System::Object>
ResolveService(
const
ServiceDescriptor
& descriptor);
43
44
bool
m_bIsRoot;
45
ServiceProvider
* m_pRootProvider;
46
47
struct
Impl;
48
DotNetDupe::System::SmartPointer<Impl>
m_pImpl;
49
};
50
54
class
ServiceScope
:
public
IServiceScope
{
55
public
:
58
DOTNETDUPE_API
ServiceScope
(
DotNetDupe::System::SmartPointer<ServiceProvider>
pProvider);
59
61
DOTNETDUPE_API
~ServiceScope
()
override
;
62
65
DOTNETDUPE_API
DotNetDupe::System::SmartPointer<DotNetDupe::System::IServiceProvider>
GetServiceProvider
()
const override
;
66
68
DOTNETDUPE_API
void
Dispose
()
override
;
69
70
private
:
71
DotNetDupe::System::SmartPointer<ServiceProvider>
m_pProvider;
72
};
73
78
class
ServiceScopeFactory
:
public
IServiceScopeFactory
{
79
public
:
82
DOTNETDUPE_API
ServiceScopeFactory
(
ServiceProvider
* pProvider);
83
85
DOTNETDUPE_API
~ServiceScopeFactory
()
override
=
default
;
86
89
DOTNETDUPE_API
DotNetDupe::System::SmartPointer<IServiceScope>
CreateScope
()
override
;
90
91
private
:
92
ServiceProvider
* m_pProvider;
93
};
94
}
95
}
96
}
DOTNETDUPE_API
#define DOTNETDUPE_API
Platform-specific linkage decoration for exporting or importing library symbols.
Definition
Common.h:20
CriticalSection.h
Provides a re-entrant mutual exclusion primitive for thread synchronization.
IDisposable.h
IServiceCollection.h
IServiceProvider.h
Defines a mechanism for retrieving a service object; that is, an object that provides custom support ...
IServiceScopeFactory.h
ServiceDescriptor.h
DotNetDupe::Extensions::DependencyInjection::IServiceCollection
Specifies the contract for a collection of service descriptors.
Definition
IServiceCollection.h:15
DotNetDupe::Extensions::DependencyInjection::IServiceScopeFactory
Defines a factory interface used to create instances of IServiceScope.
Definition
IServiceScopeFactory.h:14
DotNetDupe::Extensions::DependencyInjection::IServiceScope
Controls the lifetime of a scoped service.
Definition
IServiceScope.h:16
DotNetDupe::Extensions::DependencyInjection::ServiceDescriptor
Describes a service with its service type, implementation, and lifetime.
Definition
ServiceDescriptor.h:19
DotNetDupe::Extensions::DependencyInjection::ServiceProvider
Default IoC service provider for resolving dependencies.
Definition
ServiceProvider.h:20
DotNetDupe::Extensions::DependencyInjection::ServiceProvider::Dispose
void Dispose() override
Disposes all resolved singleton instances and clears cached references.
Definition
ServiceProvider.cpp:178
DotNetDupe::Extensions::DependencyInjection::ServiceProvider::ServiceProvider
ServiceProvider(const IServiceCollection &collection)
Initializes a root ServiceProvider from an IServiceCollection.
Definition
ServiceProvider.cpp:113
DotNetDupe::Extensions::DependencyInjection::ServiceProvider::GetService
DotNetDupe::System::SmartPointer< DotNetDupe::System::Object > GetService(const std::type_index &serviceType) override
Resolves a service object of the specified type.
Definition
ServiceProvider.cpp:132
DotNetDupe::Extensions::DependencyInjection::ServiceScopeFactory::ServiceScopeFactory
ServiceScopeFactory(ServiceProvider *pProvider)
Initializes a ServiceScopeFactory bound to a root provider.
Definition
ServiceProvider.cpp:223
DotNetDupe::Extensions::DependencyInjection::ServiceScopeFactory::~ServiceScopeFactory
~ServiceScopeFactory() override=default
Virtual destructor.
DotNetDupe::Extensions::DependencyInjection::ServiceScopeFactory::CreateScope
DotNetDupe::System::SmartPointer< IServiceScope > CreateScope() override
Creates a new child IServiceScope.
Definition
ServiceProvider.cpp:228
DotNetDupe::Extensions::DependencyInjection::ServiceScope::GetServiceProvider
DotNetDupe::System::SmartPointer< DotNetDupe::System::IServiceProvider > GetServiceProvider() const override
Gets the scoped IServiceProvider.
Definition
ServiceProvider.cpp:208
DotNetDupe::Extensions::DependencyInjection::ServiceScope::Dispose
void Dispose() override
Disposes the scope and all scoped instances created within it.
Definition
ServiceProvider.cpp:213
DotNetDupe::Extensions::DependencyInjection::ServiceScope::ServiceScope
ServiceScope(DotNetDupe::System::SmartPointer< ServiceProvider > pProvider)
Initializes a ServiceScope wrapping a scoped ServiceProvider.
Definition
ServiceProvider.cpp:198
DotNetDupe::System::IO::IDisposable
Provides a mechanism for releasing unmanaged resources.
Definition
IDisposable.h:13
DotNetDupe::System::IServiceProvider
Defines a mechanism for retrieving a service object; that is, an object that provides custom support ...
Definition
IServiceProvider.h:20
DotNetDupe::System::SmartPointer
A unified smart pointer that supports both unique and shared ownership semantics.
Definition
SmartPointer.h:72
DotNetDupe::Extensions::DependencyInjection
Definition
IServiceCollection.h:9
DotNetDupe::Extensions
Definition
IServiceCollection.h:8
DotNetDupe
Definition
IServiceCollection.h:7
Include
Extensions
DependencyInjection
ServiceProvider.h
Generated by
1.18.0