Using .NET 7 minimal API, I start with this file:
C#public static class CorpServicesEndpoints {
public static void RegisterCorpServices(this IEndpointRouteBuilder builder) {
var group = builder.MapGroup("corpServices");
group
.MapPut("utilization", Foo)
.RequireAuthorization(PolicyName.CorpServicesAssessmentUploader);
}
private static async Task<Results<NoContent, BadRequest<List<string>>>> Foo(IFormFileCollection files, ICorpServicesRepository repository, CancellationToken cancellationToken) {
var results = await repository.UploadUtilizationAsync(files, cancellationToken);
if (results is null)
return TypedResults.NoContent();
else
return TypedResults.BadRequest(results);
}
}
Then I tell it to inline the lambda, and I end up with this:
C#group
.MapPut("utilization", async (files, repository, cancellationToken) => {
var results = await repository.UploadUtilizationAsync(files, cancellationToken);
if (results is null)
return TypedResults.NoContent();
else
return TypedResults.BadRequest(results);
})
.RequireAuthorization(PolicyName.CorpServicesAssessmentUploader);
which no longer compiles because:
CS8934: Cannot convert lambda expression to type
RequestDelegate
because the return type does not match the delegate return type.
Scott,
I reproduced this issue. We will fix it soon.