diff --git a/src/OpenIddict.Core/OpenIddictExtensions.cs b/src/OpenIddict.Core/OpenIddictExtensions.cs
index 7e127de5..70c9b6e4 100644
--- a/src/OpenIddict.Core/OpenIddictExtensions.cs
+++ b/src/OpenIddict.Core/OpenIddictExtensions.cs
@@ -19,11 +19,10 @@ namespace Microsoft.Extensions.DependencyInjection {
/// The services collection.
/// The .
public static OpenIddictBuilder AddOpenIddict([NotNull] this IServiceCollection services) {
- if (services == null) {
- throw new ArgumentNullException(nameof(services));
- }
-
- return services.AddOpenIddict();
+ return services.AddOpenIddict();
}
///
@@ -35,10 +34,6 @@ namespace Microsoft.Extensions.DependencyInjection {
/// The .
public static OpenIddictBuilder AddOpenIddict([NotNull] this IServiceCollection services)
where TKey : IEquatable {
- if (services == null) {
- throw new ArgumentNullException(nameof(services));
- }
-
return services.AddOpenIddict,
OpenIddictAuthorization,
OpenIddictScope,
@@ -81,5 +76,70 @@ namespace Microsoft.Extensions.DependencyInjection {
return builder;
}
+
+ ///
+ /// Registers the default OpenIddict services in the DI container,
+ /// using the default entities and the default entity key type.
+ ///
+ /// The services collection.
+ /// The configuration delegate used to register new services.
+ /// The .
+ public static IServiceCollection AddOpenIddict(
+ [NotNull] this IServiceCollection services,
+ [NotNull] Action configuration) {
+ return services.AddOpenIddict(configuration);
+ }
+
+ ///
+ /// Registers the default OpenIddict services in the DI container,
+ /// using the default entities and the specified entity key type.
+ ///
+ /// The type of the entity primary keys.
+ /// The services collection.
+ /// The configuration delegate used to register new services.
+ /// The .
+ public static IServiceCollection AddOpenIddict(
+ [NotNull] this IServiceCollection services,
+ [NotNull] Action configuration)
+ where TKey : IEquatable {
+ return services.AddOpenIddict,
+ OpenIddictAuthorization,
+ OpenIddictScope,
+ OpenIddictToken>(configuration);
+ }
+
+ ///
+ /// Registers the default OpenIddict services in the DI container, using the specified entities.
+ ///
+ /// The type of the Application entity.
+ /// The type of the Authorization entity.
+ /// The type of the Scope entity.
+ /// The type of the Token entity.
+ /// The services collection.
+ /// The configuration delegate used to register new services.
+ /// The .
+ public static IServiceCollection AddOpenIddict(
+ [NotNull] this IServiceCollection services,
+ [NotNull] Action configuration)
+ where TApplication : class
+ where TAuthorization : class
+ where TScope : class
+ where TToken : class {
+ if (services == null) {
+ throw new ArgumentNullException(nameof(services));
+ }
+
+ if (configuration == null) {
+ throw new ArgumentNullException(nameof(configuration));
+ }
+
+ // Register the OpenIddict core services and invoke the configuration delegate.
+ configuration(services.AddOpenIddict());
+
+ return services;
+ }
}
}
\ No newline at end of file