如何传入异步函数来接收函数类中的值
本文关键字:函数 何传入 异步 | 更新日期: 2023-09-27 18:05:13
我有一组函数,我想传递给另一个函数在该函数内执行。下面是我的尝试。最后一个是我试图与泛型函数一起使用的。
My controller function
[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);
}
async函数不能返回Data.Models.Client
,只能返回Task<IData.Models.Client>
、Task
或void
。
你应该得到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);
}