Douglas, na verdade tem sim, mas não tanto quanto eu tinha afirmado. O que tinha me passado desapercebido é que app.Run();
pede um delegate
. (Mais informações aqui)
Ao colocar os parênteses, o compilador dá erro e já mostra que precisa do RequestDelegate que o Daniel falou.
Reescrevi o código, como uma função anônima, usando de parâmetro para app.Run();
e o código ficou assim:
public void Configure(IApplicationBuilder app)
{
app.Run(async context =>
{
await context.Response.WriteAsync(new LivroRepositorioCSV().ParaLer.ToString());
});
}
Agora, mesmo sem explicitar em lugar algum que precisamos de um objeto do tipo HttpContext
, recebemos esse objeto, como a seguir:
Pelo que entendi, não se usa parênteses porque esse método recebe um objeto do tipo HttpContext
via injeção de dependência (que no código comprimido não é nem citado), e retorna uma Task
. Se colocar os parênteses, o compilador vai pedir para você escrever o delegate (que nesse caso, já está dentro do método). E em momento algum pede para indicar de onde vem esse objeto do tipo HttpContext
.
Espero que dessa vez eu não tenha dado mancada. Mas claro, a resposta não está na injeção de dependência. Fui navegando de classe em classe (que tem a ver com o código) na documentação e não encontrei nenhuma resposta óbvia sobre isso.
EDIT: Só para testar, apaguei o LivrosParaTestar
de dentro de app.Run()
e comecei escrever novamente para ver a sugestão e o resultado ao começar escrever e apertar o foi que veio sem os parênteses, mas indica que recebe o HttpContext
como parâmetro do método:
Pelo que vi, tem a ver com handler, mas ainda tenho que pesquisar a fundo.