Как известно, IApplicationBuilder метода Configure (class Startup) в ASP.NET Core требует специальной семантики (иметь метод "Invoke" с входным параметром типа HttpContext и Task как возвращаемое значение). Но почему он не реализован как интерфейс? Я могу написать что-то вроде этого:
public class FakeMiddleware
{
}
и зарегистрируйте его:
app.UseMiddleware<FakeMiddleware>();
и мы получим ошибку времени выполнения. Конечно, это тривиальная вещь и ее легко найти и исправить, но она реализована так грубо, без интерфейса?