Por que o middleware no ASP.NET Core requer semântica específica, mas não uma interface?
Como conhecido, IApplicationBuilder do método Configure (classe Startup) no ASP.NET Core requer semântica específica (para ter o método 'Invoke' com parâmetro de entrada do tipo HttpContext e Task como valor de retorno). Mas por que não é implementado como interface? Eu posso escrever algo assim:
public class FakeMiddleware
{
}
e registre-o:
app.UseMiddleware<FakeMiddleware>();
e teremos um erro de tempo de execução. Claro, é uma coisa trivial e fácil de ser encontrada e corrigida, mas é implementada de maneira áspera, sem interface?