net custom asp interface asp.net-core owin middleware owin-middleware

interface - custom - ¿Por qué el middleware en ASP.NET Core requiere semántica específica, pero no una interfaz?



actionfilterattribute asp.net core (1)

Como se sabe, IApplicationBuilder del método Configure (clase Startup) en ASP.NET Core requiere semántica específica (para tener el método ''Invoke'' con el parámetro de entrada de tipo HttpContext y Task como valor de retorno). Pero ¿por qué no se implementa como interfaz? Puedo escribir algo así:

public class FakeMiddleware { }

y registralo:

app.UseMiddleware<FakeMiddleware>();

y obtendremos un error de ejecución. Por supuesto, es algo trivial y fácil de encontrar y arreglar, pero ¿está implementado de manera aproximada, sin interfaz?


El método Invoke es flexible y puede solicitar parámetros adicionales. ASP.NET inyectará los parámetros adicionales utilizando la configuración del servicio de la aplicación.

public async Task Invoke(HttpContext ctx, IHostingEnvironment host, ISomethingElse service) { // ... }

Las definiciones de la interfaz C # no pueden proporcionar esta flexibilidad de una manera agradable.