diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.Keyed.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.Keyed.cs
index ed317a6cf104c8..b66572b3dd74d1 100644
--- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.Keyed.cs
+++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.Keyed.cs
@@ -16,6 +16,7 @@ public static partial class ServiceCollectionDescriptorExtensions
/// The .
/// The type of the service to register.
/// The service key.
+ ///
public static void TryAddKeyedTransient(
this IServiceCollection collection,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service,
@@ -37,6 +38,7 @@ public static void TryAddKeyedTransient(
/// The type of the service to register.
/// The service key.
/// The implementation type of the service.
+ ///
public static void TryAddKeyedTransient(
this IServiceCollection collection,
Type service,
@@ -60,6 +62,7 @@ public static void TryAddKeyedTransient(
/// The type of the service to register.
/// The service key.
/// The factory that creates the service.
+ ///
public static void TryAddKeyedTransient(
this IServiceCollection collection,
Type service,
@@ -81,6 +84,7 @@ public static void TryAddKeyedTransient(
/// The type of the service to add.
/// The .
/// The service key.
+ ///
public static void TryAddKeyedTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection, object? serviceKey)
where TService : class
{
@@ -98,6 +102,7 @@ public static void TryAddKeyedTransient(
/// The type of the implementation to use.
/// The .
/// The service key.
+ ///
public static void TryAddKeyedTransient(this IServiceCollection collection, object? serviceKey)
where TService : class
where TImplementation : class, TService
@@ -116,6 +121,7 @@ public static void TryAddKeyedTransient(
/// The .
/// The service key.
/// The factory that creates the service.
+ ///
public static void TryAddKeyedTransient(
this IServiceCollection services,
object? serviceKey,
@@ -132,6 +138,7 @@ public static void TryAddKeyedTransient(
/// The .
/// The type of the service to register.
/// The service key.
+ ///
public static void TryAddKeyedScoped(
this IServiceCollection collection,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service,
@@ -153,6 +160,7 @@ public static void TryAddKeyedScoped(
/// The type of the service to register.
/// The service key.
/// The implementation type of the service.
+ ///
public static void TryAddKeyedScoped(
this IServiceCollection collection,
Type service,
@@ -176,6 +184,7 @@ public static void TryAddKeyedScoped(
/// The type of the service to register.
/// The service key.
/// The factory that creates the service.
+ ///
public static void TryAddKeyedScoped(
this IServiceCollection collection,
Type service,
@@ -197,6 +206,7 @@ public static void TryAddKeyedScoped(
/// The type of the service to add.
/// The .
/// The service key.
+ ///
public static void TryAddKeyedScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection, object? serviceKey)
where TService : class
{
@@ -214,6 +224,7 @@ public static void TryAddKeyedScoped(
/// The type of the implementation to use.
/// The .
/// The service key.
+ ///
public static void TryAddKeyedScoped(this IServiceCollection collection, object? serviceKey)
where TService : class
where TImplementation : class, TService
@@ -232,6 +243,7 @@ public static void TryAddKeyedScoped(
/// The .
/// The factory that creates the service.
/// The service key.
+ ///
public static void TryAddKeyedScoped(
this IServiceCollection services,
object? serviceKey,
@@ -248,6 +260,7 @@ public static void TryAddKeyedScoped(
/// The .
/// The type of the service to register.
/// The service key.
+ ///
public static void TryAddKeyedSingleton(
this IServiceCollection collection,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service,
@@ -269,6 +282,7 @@ public static void TryAddKeyedSingleton(
/// The type of the service to register.
/// The service key.
/// The implementation type of the service.
+ ///
public static void TryAddKeyedSingleton(
this IServiceCollection collection,
Type service,
@@ -292,6 +306,7 @@ public static void TryAddKeyedSingleton(
/// The type of the service to register.
/// The service key.
/// The factory that creates the service.
+ ///
public static void TryAddKeyedSingleton(
this IServiceCollection collection,
Type service,
@@ -313,6 +328,7 @@ public static void TryAddKeyedSingleton(
/// The type of the service to add.
/// The .
/// The service key.
+ ///
public static void TryAddKeyedSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection, object? serviceKey)
where TService : class
{
@@ -330,6 +346,7 @@ public static void TryAddKeyedSingleton(
/// The type of the implementation to use.
/// The .
/// The service key.
+ ///
public static void TryAddKeyedSingleton(this IServiceCollection collection, object? serviceKey)
where TService : class
where TImplementation : class, TService
@@ -348,6 +365,7 @@ public static void TryAddKeyedSingleton(
/// The .
/// The service key.
/// The instance of the service to add.
+ ///
public static void TryAddKeyedSingleton(this IServiceCollection collection, object? serviceKey, TService instance)
where TService : class
{
@@ -367,6 +385,7 @@ public static void TryAddKeyedSingleton(this IServiceCollection collec
/// The .
/// The service key.
/// The factory that creates the service.
+ ///
public static void TryAddKeyedSingleton(
this IServiceCollection services,
object? serviceKey,
diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs
index 5e2f500d76581a..3d519f96e8cd00 100644
--- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs
+++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs
@@ -102,6 +102,7 @@ public static void TryAdd(
///
/// The .
/// The type of the service to register.
+ ///
public static void TryAddTransient(
this IServiceCollection collection,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service)
@@ -121,6 +122,7 @@ public static void TryAddTransient(
/// The .
/// The type of the service to register.
/// The implementation type of the service.
+ ///
public static void TryAddTransient(
this IServiceCollection collection,
Type service,
@@ -142,6 +144,7 @@ public static void TryAddTransient(
/// The .
/// The type of the service to register.
/// The factory that creates the service.
+ ///
public static void TryAddTransient(
this IServiceCollection collection,
Type service,
@@ -161,6 +164,7 @@ public static void TryAddTransient(
///
/// The type of the service to add.
/// The .
+ ///
public static void TryAddTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection)
where TService : class
{
@@ -177,6 +181,7 @@ public static void TryAddTransient(
/// The type of the service to add.
/// The type of the implementation to use.
/// The .
+ ///
public static void TryAddTransient(this IServiceCollection collection)
where TService : class
where TImplementation : class, TService
@@ -194,6 +199,7 @@ public static void TryAddTransient(
/// The type of the service to add.
/// The .
/// The factory that creates the service.
+ ///
public static void TryAddTransient(
this IServiceCollection services,
Func implementationFactory)
@@ -208,6 +214,7 @@ public static void TryAddTransient(
///
/// The .
/// The type of the service to register.
+ ///
public static void TryAddScoped(
this IServiceCollection collection,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service)
@@ -227,6 +234,7 @@ public static void TryAddScoped(
/// The .
/// The type of the service to register.
/// The implementation type of the service.
+ ///
public static void TryAddScoped(
this IServiceCollection collection,
Type service,
@@ -248,6 +256,7 @@ public static void TryAddScoped(
/// The .
/// The type of the service to register.
/// The factory that creates the service.
+ ///
public static void TryAddScoped(
this IServiceCollection collection,
Type service,
@@ -267,6 +276,7 @@ public static void TryAddScoped(
///
/// The type of the service to add.
/// The .
+ ///
public static void TryAddScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection)
where TService : class
{
@@ -283,6 +293,7 @@ public static void TryAddScoped(
/// The type of the service to add.
/// The type of the implementation to use.
/// The .
+ ///
public static void TryAddScoped(this IServiceCollection collection)
where TService : class
where TImplementation : class, TService
@@ -300,6 +311,7 @@ public static void TryAddScoped(
/// The type of the service to add.
/// The .
/// The factory that creates the service.
+ ///
public static void TryAddScoped(
this IServiceCollection services,
Func implementationFactory)
@@ -314,6 +326,7 @@ public static void TryAddScoped(
///
/// The .
/// The type of the service to register.
+ ///
public static void TryAddSingleton(
this IServiceCollection collection,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service)
@@ -333,6 +346,7 @@ public static void TryAddSingleton(
/// The .
/// The type of the service to register.
/// The implementation type of the service.
+ ///
public static void TryAddSingleton(
this IServiceCollection collection,
Type service,
@@ -354,6 +368,7 @@ public static void TryAddSingleton(
/// The .
/// The type of the service to register.
/// The factory that creates the service.
+ ///
public static void TryAddSingleton(
this IServiceCollection collection,
Type service,
@@ -373,6 +388,7 @@ public static void TryAddSingleton(
///
/// The type of the service to add.
/// The .
+ ///
public static void TryAddSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection)
where TService : class
{
@@ -389,6 +405,7 @@ public static void TryAddSingleton(
/// The type of the service to add.
/// The type of the implementation to use.
/// The .
+ ///
public static void TryAddSingleton(this IServiceCollection collection)
where TService : class
where TImplementation : class, TService
@@ -406,6 +423,7 @@ public static void TryAddSingleton(
/// The type of the service to add.
/// The .
/// The instance of the service to add.
+ ///
public static void TryAddSingleton(this IServiceCollection collection, TService instance)
where TService : class
{
@@ -424,6 +442,7 @@ public static void TryAddSingleton(this IServiceCollection collection,
/// The type of the service to add.
/// The .
/// The factory that creates the service.
+ ///
public static void TryAddSingleton(
this IServiceCollection services,
Func implementationFactory)
diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.Keyed.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.Keyed.cs
index 791c8b172ba11d..f3f80a97235927 100644
--- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.Keyed.cs
+++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.Keyed.cs
@@ -21,6 +21,11 @@ public static partial class ServiceCollectionServiceExtensions
/// The of the service.
/// The implementation type of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedTransient(
this IServiceCollection services,
@@ -45,6 +50,11 @@ public static IServiceCollection AddKeyedTransient(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedTransient(
this IServiceCollection services,
@@ -69,6 +79,11 @@ public static IServiceCollection AddKeyedTransient(
/// The to add the service to.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedTransient(
this IServiceCollection services,
@@ -89,6 +104,11 @@ public static IServiceCollection AddKeyedTransient(
/// The type of the service to register and the implementation to use.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedTransient(
this IServiceCollection services,
@@ -109,6 +129,11 @@ public static IServiceCollection AddKeyedTransient(
/// The to add the service to.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(
this IServiceCollection services,
@@ -130,6 +155,11 @@ public static IServiceCollection AddKeyedTransient(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedTransient(
this IServiceCollection services,
@@ -155,6 +185,11 @@ public static IServiceCollection AddKeyedTransient(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedTransient(
this IServiceCollection services,
@@ -179,6 +214,11 @@ public static IServiceCollection AddKeyedTransient(
/// The of the service.
/// The implementation type of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedScoped(
this IServiceCollection services,
@@ -203,6 +243,11 @@ public static IServiceCollection AddKeyedScoped(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedScoped(
this IServiceCollection services,
@@ -227,6 +272,11 @@ public static IServiceCollection AddKeyedScoped(
/// The to add the service to.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedScoped(
this IServiceCollection services,
@@ -247,6 +297,11 @@ public static IServiceCollection AddKeyedScoped(
/// The type of the service to register and the implementation to use.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedScoped(
this IServiceCollection services,
@@ -267,6 +322,11 @@ public static IServiceCollection AddKeyedScoped(
/// The to add the service to.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(
this IServiceCollection services,
@@ -288,6 +348,11 @@ public static IServiceCollection AddKeyedScoped(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedScoped(
this IServiceCollection services,
@@ -313,6 +378,11 @@ public static IServiceCollection AddKeyedScoped(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedScoped(
this IServiceCollection services,
@@ -337,6 +407,11 @@ public static IServiceCollection AddKeyedScoped(
/// The of the service.
/// The implementation type of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
@@ -361,6 +436,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
@@ -385,6 +465,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The to add the service to.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
@@ -405,6 +490,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The type of the service to register and the implementation to use.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
@@ -425,6 +515,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The to add the service to.
/// The of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(
this IServiceCollection services,
@@ -446,6 +541,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
@@ -471,6 +571,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The of the service.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
@@ -495,6 +600,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The of the service.
/// The instance of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
@@ -520,6 +630,11 @@ public static IServiceCollection AddKeyedSingleton(
/// The of the service.
/// The instance of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type and key has already been registered.
+ /// When multiple registrations exist for the same type and key, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddKeyedSingleton(
this IServiceCollection services,
diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs
index f78df8af8a6d89..6aed5e65f7c697 100644
--- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs
+++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs
@@ -20,6 +20,11 @@ public static partial class ServiceCollectionServiceExtensions
/// The type of the service to register.
/// The implementation type of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddTransient(
this IServiceCollection services,
@@ -42,6 +47,11 @@ public static IServiceCollection AddTransient(
/// The type of the service to register.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddTransient(
this IServiceCollection services,
@@ -64,6 +74,11 @@ public static IServiceCollection AddTransient(
/// The type of the implementation to use.
/// The to add the service to.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddTransient(this IServiceCollection services)
where TService : class
@@ -81,6 +96,11 @@ public static IServiceCollection AddTransient(
/// The to add the service to.
/// The type of the service to register and the implementation to use.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddTransient(
this IServiceCollection services,
@@ -99,6 +119,11 @@ public static IServiceCollection AddTransient(
/// The type of the service to add.
/// The to add the service to.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services)
where TService : class
@@ -117,6 +142,11 @@ public static IServiceCollection AddTransient(
/// The to add the service to.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddTransient(
this IServiceCollection services,
@@ -140,6 +170,11 @@ public static IServiceCollection AddTransient(
/// The to add the service to.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddTransient(
this IServiceCollection services,
@@ -162,6 +197,11 @@ public static IServiceCollection AddTransient(
/// The type of the service to register.
/// The implementation type of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddScoped(
this IServiceCollection services,
@@ -184,6 +224,11 @@ public static IServiceCollection AddScoped(
/// The type of the service to register.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddScoped(
this IServiceCollection services,
@@ -206,6 +251,11 @@ public static IServiceCollection AddScoped(
/// The type of the implementation to use.
/// The to add the service to.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddScoped(this IServiceCollection services)
where TService : class
@@ -223,6 +273,11 @@ public static IServiceCollection AddScoped(
/// The to add the service to.
/// The type of the service to register and the implementation to use.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddScoped(
this IServiceCollection services,
@@ -241,6 +296,11 @@ public static IServiceCollection AddScoped(
/// The type of the service to add.
/// The to add the service to.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services)
where TService : class
@@ -259,6 +319,11 @@ public static IServiceCollection AddScoped(
/// The to add the service to.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddScoped(
this IServiceCollection services,
@@ -282,6 +347,11 @@ public static IServiceCollection AddScoped(
/// The to add the service to.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddScoped(
this IServiceCollection services,
@@ -305,6 +375,11 @@ public static IServiceCollection AddScoped(
/// The type of the service to register.
/// The implementation type of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(
this IServiceCollection services,
@@ -327,6 +402,11 @@ public static IServiceCollection AddSingleton(
/// The type of the service to register.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(
this IServiceCollection services,
@@ -349,6 +429,11 @@ public static IServiceCollection AddSingleton(
/// The type of the implementation to use.
/// The to add the service to.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(this IServiceCollection services)
where TService : class
@@ -366,6 +451,11 @@ public static IServiceCollection AddSingleton(
/// The to add the service to.
/// The type of the service to register and the implementation to use.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(
this IServiceCollection services,
@@ -384,6 +474,11 @@ public static IServiceCollection AddSingleton(
/// The type of the service to add.
/// The to add the service to.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services)
where TService : class
@@ -402,6 +497,11 @@ public static IServiceCollection AddSingleton(
/// The to add the service to.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(
this IServiceCollection services,
@@ -425,6 +525,11 @@ public static IServiceCollection AddSingleton(
/// The to add the service to.
/// The factory that creates the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(
this IServiceCollection services,
@@ -447,6 +552,11 @@ public static IServiceCollection AddSingleton(
/// The type of the service to register.
/// The instance of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(
this IServiceCollection services,
@@ -470,6 +580,11 @@ public static IServiceCollection AddSingleton(
/// The to add the service to.
/// The instance of the service.
/// A reference to this instance after the operation has completed.
+ ///
+ /// This method always adds a new registration to the , even if a service of the same type has already been registered.
+ /// When multiple registrations exist, returns the last registered service.
+ /// Use to retrieve all registered services.
+ ///
///
public static IServiceCollection AddSingleton(
this IServiceCollection services,