gpt4 book ai didi

c# - 如何传入异步函数以在函数类中接收值

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:14 25 4
gpt4 key购买 nike

我有一组函数,我想将它们传递给另一个函数以在该函数内执行。以下是我的尝试。最后一个是我尝试与通用函数一起使用的那个。

我的 Controller 函数

[HttpPost]
public async Task<Client> CreateClient([FromBody] Client client)
{
return GetMap(client, _clientRepo.AddAsync);
}

映射函数

public static Task<Client> GetMap(Client client, Func<Data.Models.Client, Client> func)
{
var map = Mapper.Map<Client, Data.Models.Client>(client);
var ret = func(map);
return Mapper.Map<Data.Models.Client, Client>(ret);
}

工作函数

[HttpPost]
public async Task<Client> CreateClient([FromBody] Client client)
{
var map = Mapper.Map<Client, Data.Models.Client>(client);
var ret = await _clientRepo.AddAsync(map);
return Mapper.Map<Data.Models.Client, Client>(ret);
}

最佳答案

异步函数不能返回 Data.Models.Client它只能返回 Task<IData.Models.Client> Taskvoid .

你应该得到 Func<Task<Data.Models.Client>, Client>作为参数

如果您想针对异步实现和非异步实现,我会为您的方法创建两个重载,一个异步重载和一个非异步重载。

public static async Task<Client> GetMap(Client client, Func<Task<Data.Models.Client>, Client> func)
{
var map = Mapper.Map<Client, Data.Models.Client>(client);
var ret = await func(map);
return Mapper.Map<Data.Models.Client, Client>(ret);
}

public static Task<Client> GetMap(Client client, Func<Data.Models.Client>, Client> func)
{
var map = Mapper.Map<Client, Data.Models.Client>(client);
var ret = func(map);
return Mapper.Map<Data.Models.Client, Client>(ret);
}

关于c# - 如何传入异步函数以在函数类中接收值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com