Adding params overloads for AddControllersAsServices

- Moved null checks
- Tweaked XML docs
This commit is contained in:
Kristian Hellang 2016-01-04 16:56:38 +01:00 committed by Ryan Nowak
parent 04453a2b4f
commit 6737a1f243
3 changed files with 84 additions and 26 deletions

View File

@ -7,6 +7,7 @@ using System.Reflection;
using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Formatters; using Microsoft.AspNet.Mvc.Formatters;
using Microsoft.AspNet.Mvc.Internal; using Microsoft.AspNet.Mvc.Internal;
using System.Linq;
namespace Microsoft.Extensions.DependencyInjection namespace Microsoft.Extensions.DependencyInjection
{ {
@ -62,8 +63,21 @@ namespace Microsoft.Extensions.DependencyInjection
/// discovery. /// discovery.
/// </summary> /// </summary>
/// <param name="builder">The <see cref="IMvcBuilder"/>.</param> /// <param name="builder">The <see cref="IMvcBuilder"/>.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register in the /// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register.</param>
/// <paramref name="services"/> and used for controller discovery.</param> /// <returns>The <see cref="IMvcBuilder"/>.</returns>
public static IMvcBuilder AddControllersAsServices(
this IMvcBuilder builder,
params Type[] controllerTypes)
{
return builder.AddControllersAsServices(controllerTypes.AsEnumerable());
}
/// <summary>
/// Register the specified <paramref name="controllerTypes"/> as services and as a source for controller
/// discovery.
/// </summary>
/// <param name="builder">The <see cref="IMvcBuilder"/>.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register.</param>
/// <returns>The <see cref="IMvcBuilder"/>.</returns> /// <returns>The <see cref="IMvcBuilder"/>.</returns>
public static IMvcBuilder AddControllersAsServices( public static IMvcBuilder AddControllersAsServices(
this IMvcBuilder builder, this IMvcBuilder builder,
@ -74,17 +88,26 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder)); throw new ArgumentNullException(nameof(builder));
} }
if (controllerTypes == null)
{
throw new ArgumentNullException(nameof(controllerTypes));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerTypes); ControllersAsServices.AddControllersAsServices(builder.Services, controllerTypes);
return builder; return builder;
} }
/// <summary> /// <summary>
/// Registers controller types from the specified <paramref name="assemblies"/> as services and as a source /// Registers controller types from the specified <paramref name="controllerAssemblies"/> as services and as a source
/// for controller discovery.
/// </summary>
/// <param name="builder">The <see cref="IMvcBuilder"/>.</param>
/// <param name="controllerAssemblies">Assemblies to scan.</param>
/// <returns>The <see cref="IMvcBuilder"/>.</returns>
public static IMvcBuilder AddControllersAsServices(
this IMvcBuilder builder,
params Assembly[] controllerAssemblies)
{
return builder.AddControllersAsServices(controllerAssemblies.AsEnumerable());
}
/// <summary>
/// Registers controller types from the specified <paramref name="controllerAssemblies"/> as services and as a source
/// for controller discovery. /// for controller discovery.
/// </summary> /// </summary>
/// <param name="builder">The <see cref="IMvcBuilder"/>.</param> /// <param name="builder">The <see cref="IMvcBuilder"/>.</param>
@ -99,11 +122,6 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder)); throw new ArgumentNullException(nameof(builder));
} }
if (controllerAssemblies == null)
{
throw new ArgumentNullException(nameof(controllerAssemblies));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerAssemblies); ControllersAsServices.AddControllersAsServices(builder.Services, controllerAssemblies);
return builder; return builder;
} }

View File

@ -10,6 +10,7 @@ using Microsoft.AspNet.Mvc.ApplicationModels;
using Microsoft.AspNet.Mvc.Formatters; using Microsoft.AspNet.Mvc.Formatters;
using Microsoft.AspNet.Mvc.Internal; using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using System.Linq;
namespace Microsoft.Extensions.DependencyInjection namespace Microsoft.Extensions.DependencyInjection
{ {
@ -99,8 +100,21 @@ namespace Microsoft.Extensions.DependencyInjection
/// discovery. /// discovery.
/// </summary> /// </summary>
/// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param> /// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register in the /// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register.</param>
/// <paramref name="services"/> and used for controller discovery.</param> /// <returns>The <see cref="IMvcCoreBuilder"/>.</returns>
public static IMvcCoreBuilder AddControllersAsServices(
this IMvcCoreBuilder builder,
params Type[] controllerTypes)
{
return builder.AddControllersAsServices(controllerTypes.AsEnumerable());
}
/// <summary>
/// Register the specified <paramref name="controllerTypes"/> as services and as a source for controller
/// discovery.
/// </summary>
/// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register.</param>
/// <returns>The <see cref="IMvcCoreBuilder"/>.</returns> /// <returns>The <see cref="IMvcCoreBuilder"/>.</returns>
public static IMvcCoreBuilder AddControllersAsServices( public static IMvcCoreBuilder AddControllersAsServices(
this IMvcCoreBuilder builder, this IMvcCoreBuilder builder,
@ -111,17 +125,26 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder)); throw new ArgumentNullException(nameof(builder));
} }
if (controllerTypes == null)
{
throw new ArgumentNullException(nameof(controllerTypes));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerTypes); ControllersAsServices.AddControllersAsServices(builder.Services, controllerTypes);
return builder; return builder;
} }
/// <summary> /// <summary>
/// Registers controller types from the specified <paramref name="assemblies"/> as services and as a source /// Registers controller types from the specified <paramref name="controllerAssemblies"/> as services and as a source
/// for controller discovery.
/// </summary>
/// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
/// <param name="controllerAssemblies">Assemblies to scan.</param>
/// <returns>The <see cref="IMvcCoreBuilder"/>.</returns>
public static IMvcCoreBuilder AddControllersAsServices(
this IMvcCoreBuilder builder,
params Assembly[] controllerAssemblies)
{
return builder.AddControllersAsServices(controllerAssemblies.AsEnumerable());
}
/// <summary>
/// Registers controller types from the specified <paramref name="controllerAssemblies"/> as services and as a source
/// for controller discovery. /// for controller discovery.
/// </summary> /// </summary>
/// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param> /// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
@ -136,11 +159,6 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder)); throw new ArgumentNullException(nameof(builder));
} }
if (controllerAssemblies == null)
{
throw new ArgumentNullException(nameof(controllerAssemblies));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerAssemblies); ControllersAsServices.AddControllersAsServices(builder.Services, controllerAssemblies);
return builder; return builder;
} }

View File

@ -16,7 +16,18 @@ namespace Microsoft.AspNet.Mvc.Internal
{ {
public static void AddControllersAsServices(IServiceCollection services, IEnumerable<Type> types) public static void AddControllersAsServices(IServiceCollection services, IEnumerable<Type> types)
{ {
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
if (types == null)
{
throw new ArgumentNullException(nameof(types));
}
var controllerTypeProvider = new StaticControllerTypeProvider(); var controllerTypeProvider = new StaticControllerTypeProvider();
foreach (var type in types) foreach (var type in types)
{ {
services.TryAddTransient(type, type); services.TryAddTransient(type, type);
@ -29,7 +40,18 @@ namespace Microsoft.AspNet.Mvc.Internal
public static void AddControllersAsServices(IServiceCollection services, IEnumerable<Assembly> assemblies) public static void AddControllersAsServices(IServiceCollection services, IEnumerable<Assembly> assemblies)
{ {
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
if (assemblies == null)
{
throw new ArgumentNullException(nameof(assemblies));
}
var assemblyProvider = new StaticAssemblyProvider(); var assemblyProvider = new StaticAssemblyProvider();
foreach (var assembly in assemblies) foreach (var assembly in assemblies)
{ {
assemblyProvider.CandidateAssemblies.Add(assembly); assemblyProvider.CandidateAssemblies.Add(assembly);