Move UseMiddleware from RequestContainer to Http.Extensions.

This commit is contained in:
Chris Ross 2014-10-15 15:35:29 -07:00
parent 16fee38c95
commit 33dd087e0f
2 changed files with 4 additions and 26 deletions

View File

@ -3,8 +3,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Microsoft.AspNet.RequestContainer; using Microsoft.AspNet.RequestContainer;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.DependencyInjection.Fallback; using Microsoft.Framework.DependencyInjection.Fallback;
@ -14,33 +12,16 @@ namespace Microsoft.AspNet.Builder
{ {
public static class ContainerExtensions public static class ContainerExtensions
{ {
public static IApplicationBuilder UseMiddleware<T>(this IApplicationBuilder builder, params object[] args)
{
return builder.UseMiddleware(typeof(T), args);
}
public static IApplicationBuilder UseMiddleware(this IApplicationBuilder builder, Type middleware, params object[] args)
{
// TODO: move this ext method someplace nice
return builder.Use(next =>
{
var typeActivator = builder.ApplicationServices.GetService<ITypeActivator>();
var instance = typeActivator.CreateInstance(builder.ApplicationServices, middleware, new[] { next }.Concat(args).ToArray());
var methodinfo = middleware.GetMethod("Invoke", BindingFlags.Instance | BindingFlags.Public);
return (RequestDelegate)methodinfo.CreateDelegate(typeof(RequestDelegate), instance);
});
}
public static IApplicationBuilder UseRequestServices(this IApplicationBuilder builder) public static IApplicationBuilder UseRequestServices(this IApplicationBuilder builder)
{ {
return builder.UseMiddleware(typeof(ContainerMiddleware)); return builder.UseMiddleware<ContainerMiddleware>();
} }
public static IApplicationBuilder UseRequestServices(this IApplicationBuilder builder, IServiceProvider applicationServices) public static IApplicationBuilder UseRequestServices(this IApplicationBuilder builder, IServiceProvider applicationServices)
{ {
builder.ApplicationServices = applicationServices; builder.ApplicationServices = applicationServices;
return builder.UseMiddleware(typeof(ContainerMiddleware)); return builder.UseMiddleware<ContainerMiddleware>();
} }
public static IApplicationBuilder UseServices(this IApplicationBuilder builder, IEnumerable<IServiceDescriptor> applicationServices) public static IApplicationBuilder UseServices(this IApplicationBuilder builder, IEnumerable<IServiceDescriptor> applicationServices)
@ -64,7 +45,7 @@ namespace Microsoft.AspNet.Builder
serviceCollection.Add(OptionsServices.GetDefaultServices()); serviceCollection.Add(OptionsServices.GetDefaultServices());
builder.ApplicationServices = configureServices(serviceCollection); builder.ApplicationServices = configureServices(serviceCollection);
return builder.UseMiddleware(typeof(ContainerMiddleware)); return builder.UseMiddleware<ContainerMiddleware>();
} }
} }
} }

View File

@ -2,6 +2,7 @@
"version": "1.0.0-*", "version": "1.0.0-*",
"dependencies": { "dependencies": {
"Microsoft.AspNet.Http": "1.0.0-*", "Microsoft.AspNet.Http": "1.0.0-*",
"Microsoft.AspNet.Http.Extensions": "1.0.0-*",
"Microsoft.Framework.DependencyInjection": "1.0.0-*", "Microsoft.Framework.DependencyInjection": "1.0.0-*",
"Microsoft.Framework.OptionsModel": "1.0.0-*" "Microsoft.Framework.OptionsModel": "1.0.0-*"
}, },
@ -12,10 +13,6 @@
"System.Collections": "4.0.10-beta-*", "System.Collections": "4.0.10-beta-*",
"System.ComponentModel": "4.0.0-beta-*", "System.ComponentModel": "4.0.0-beta-*",
"System.Diagnostics.Debug": "4.0.10-beta-*", "System.Diagnostics.Debug": "4.0.10-beta-*",
"System.Linq": "4.0.0-beta-*",
"System.Reflection": "4.0.10-beta-*",
"System.Reflection.Extensions": "4.0.0-beta-*",
"System.Reflection.TypeExtensions": "4.0.0-beta-*",
"System.Runtime": "4.0.20-beta-*", "System.Runtime": "4.0.20-beta-*",
"System.Runtime.Extensions": "4.0.10-beta-*", "System.Runtime.Extensions": "4.0.10-beta-*",
"System.Threading": "4.0.0-beta-*", "System.Threading": "4.0.0-beta-*",