C# RequestDelegate函数()

C# RequestDelegate函数(),c#,asp.net-core,C#,Asp.net Core,我正在使用以下技术编写一个微服务: 现在,我想知道是否有可能在函数中包含RequestDelegate中的代码,因为这里的代码在lambdas中 app.UseRouter(r => { var contactRepo = new InMemoryContactRepository(); r.MapGet("contacts", async (request, response, routeData) => { var contacts =

我正在使用以下技术编写一个微服务:

现在,我想知道是否有可能在函数中包含RequestDelegate中的代码,因为这里的代码在lambdas中

app.UseRouter(r =>
{
    var contactRepo = new InMemoryContactRepository();

    r.MapGet("contacts", async (request, response, routeData) =>
    {
        var contacts = await contactRepo.GetAll();
        await response.WriteJson(contacts);
    });

    r.MapGet("contacts/{id:int}", async (request, response, routeData) =>
    {
        var contact = await contactRepo.Get(Convert.ToInt32(routeData.Values["id"]));
        await response.WriteJson(contact);
    });

    r.MapGet("contacts/delete/{id:int}", async (request, response, routeData) =>
    {
        await contactRepo.Delete(Convert.ToInt32(routeData.Values["id"]));
        var contacts = await contactRepo.GetAll();
        await response.WriteJson(contacts);
    });
});

我这样问是因为我们已经有了一些单元,我们需要将其中的代码合并到新的调用中。以上只是示例。

是的,它看起来像这样:

app.UseRouter(r =>
{
    var contactRepo = new InMemoryContactRepository();

    r.MapGet("contacts", GetContacts);

    r.MapGet("contacts/{id:int}", GetContact);

    r.MapGet("contacts/delete/{id:int}", DeleteContact);
});

private async Task GetContacts(HttpRequest request, HttpResponse response, RouteData routeData)
{
    var contact = await contactRepo.Get(Convert.ToInt32(routeData.Values["id"]));
    await response.WriteJson(contact);
}

private async Task GetContact(HttpRequest request, HttpResponse response, RouteData routeData)
{
    var contact = await contactRepo.Get(Convert.ToInt32(routeData.Values["id"]));
    await response.WriteJson(contact);
}

private async Task DeleteContact(HttpRequest request, HttpResponse response, RouteData routeData)
{
    await contactRepo.Delete(Convert.ToInt32(routeData.Values["id"]));
    var contacts = await contactRepo.GetAll();
    await response.WriteJson(contacts);
}