Почему промежуточное ПО в ASP.NET Core требует определенной семантики, а не интерфейса?

Как известно, IApplicationBuilder метода Configure (класс Startup) в ASP.NET Core требует определенной семантики (чтобы метод Invoke имел входной параметр типа HttpContext и Task в качестве возвращаемого значения). Но почему это не реализовано как интерфейс? Я могу написать что-то вроде этого:

public class FakeMiddleware
{

}

и зарегистрируйте его:

    app.UseMiddleware<FakeMiddleware>();

и мы получим ошибку во время выполнения. Конечно, это тривиальная вещь, которую легко найти и исправить, но она реализована так грубо, без интерфейса?

Ответы на вопрос(1)

Ваш ответ на вопрос