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.Formatters;
using Microsoft.AspNet.Mvc.Internal;
using System.Linq;
namespace Microsoft.Extensions.DependencyInjection
{
@ -62,8 +63,21 @@ namespace Microsoft.Extensions.DependencyInjection
/// discovery.
/// </summary>
/// <param name="builder">The <see cref="IMvcBuilder"/>.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register in the
/// <paramref name="services"/> and used for controller discovery.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register.</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>
public static IMvcBuilder AddControllersAsServices(
this IMvcBuilder builder,
@ -74,17 +88,26 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder));
}
if (controllerTypes == null)
{
throw new ArgumentNullException(nameof(controllerTypes));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerTypes);
return builder;
}
/// <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.
/// </summary>
/// <param name="builder">The <see cref="IMvcBuilder"/>.</param>
@ -99,11 +122,6 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder));
}
if (controllerAssemblies == null)
{
throw new ArgumentNullException(nameof(controllerAssemblies));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerAssemblies);
return builder;
}

View File

@ -10,6 +10,7 @@ using Microsoft.AspNet.Mvc.ApplicationModels;
using Microsoft.AspNet.Mvc.Formatters;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Extensions.DependencyInjection.Extensions;
using System.Linq;
namespace Microsoft.Extensions.DependencyInjection
{
@ -99,8 +100,21 @@ namespace Microsoft.Extensions.DependencyInjection
/// discovery.
/// </summary>
/// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register in the
/// <paramref name="services"/> and used for controller discovery.</param>
/// <param name="controllerTypes">A sequence of controller <see cref="Type"/>s to register.</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>
public static IMvcCoreBuilder AddControllersAsServices(
this IMvcCoreBuilder builder,
@ -111,17 +125,26 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder));
}
if (controllerTypes == null)
{
throw new ArgumentNullException(nameof(controllerTypes));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerTypes);
return builder;
}
/// <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.
/// </summary>
/// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
@ -136,11 +159,6 @@ namespace Microsoft.Extensions.DependencyInjection
throw new ArgumentNullException(nameof(builder));
}
if (controllerAssemblies == null)
{
throw new ArgumentNullException(nameof(controllerAssemblies));
}
ControllersAsServices.AddControllersAsServices(builder.Services, controllerAssemblies);
return builder;
}

View File

@ -16,7 +16,18 @@ namespace Microsoft.AspNet.Mvc.Internal
{
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();
foreach (var type in types)
{
services.TryAddTransient(type, type);
@ -29,7 +40,18 @@ namespace Microsoft.AspNet.Mvc.Internal
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();
foreach (var assembly in assemblies)
{
assemblyProvider.CandidateAssemblies.Add(assembly);