#22 - Make UseMiddleware look for any Invoke method.

This commit is contained in:
Chris Ross 2014-05-09 09:11:21 -07:00
parent 7edc2dfbe9
commit afa87bf857
2 changed files with 7 additions and 1 deletions

View File

@ -27,6 +27,11 @@ namespace Microsoft.AspNet.Builder
{
public static class ContainerExtensions
{
public static IBuilder UseMiddleware<T>(this IBuilder builder, params object[] args)
{
return builder.UseMiddleware(typeof(T), args);
}
public static IBuilder UseMiddleware(this IBuilder builder, Type middleware, params object[] args)
{
// TODO: move this ext method someplace nice
@ -34,7 +39,7 @@ namespace Microsoft.AspNet.Builder
{
var typeActivator = builder.ApplicationServices.GetService<ITypeActivator>();
var instance = typeActivator.CreateInstance(builder.ApplicationServices, middleware, new[] { next }.Concat(args).ToArray());
var methodinfo = middleware.GetTypeInfo().GetDeclaredMethod("Invoke");
var methodinfo = middleware.GetRuntimeMethods().Single(info => info.Name.Equals("Invoke"));
return (RequestDelegate)methodinfo.CreateDelegate(typeof(RequestDelegate), instance);
});
}

View File

@ -13,6 +13,7 @@
"System.Diagnostics.Debug": "4.0.10.0",
"System.Linq": "4.0.0.0",
"System.Reflection": "4.0.10.0",
"System.Reflection.Extensions": "4.0.0.0",
"System.Runtime": "4.0.20.0",
"System.Runtime.Extensions": "4.0.10.0",
"System.Threading": "4.0.0.0",