C# 如何传入异步函数以接收函数类中的值

C# 如何传入异步函数以接收函数类中的值,c#,automapper,func,C#,Automapper,Func,我有一组函数,我想传递给另一个函数在该函数中执行。 下面是我的尝试。最后一个是我试图与泛型函数一起使用的 我的控制器功能 [HttpPost] public async Task<Client> CreateClient([FromBody] Client client) { return GetMap(client, _clientRepo.AddAsync); } public static Task<Client> GetMap(Client client

我有一组函数,我想传递给另一个函数在该函数中执行。 下面是我的尝试。最后一个是我试图与泛型函数一起使用的

我的控制器功能

[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]
公共异步任务CreateClient([FromBody]客户端)
{
返回GetMap(client,_clientRepo.AddAsync);
}
映射函数

[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);
}
公共静态任务GetMap(客户端,Func-Func)
{
var map=Mapper.map(客户端);
var ret=func(map);
返回Mapper.Map(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);
} 
[HttpPost]
公共异步任务CreateClient([FromBody]客户端)
{
var map=Mapper.map(客户端);
var ret=wait_clientRepo.AddAsync(map);
返回Mapper.Map(ret);
} 

异步函数不能返回
数据。模型。客户端
它只能返回
任务
任务
无效

您应该获得
Func
作为参数

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

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);
}
public静态异步任务GetMap(客户端,Func-Func)
{
var map=Mapper.map(客户端);
var ret=等待函数(map);
返回Mapper.Map(ret);
}
公共静态任务GetMap(客户端、Func、客户端>Func)
{
var map=Mapper.map(客户端);
var ret=func(map);
返回Mapper.Map(ret);
}

其他功能是什么样子的?看起来您只是想让它接受一个
Func
参数?我不确定
Mapper.Map()
是否返回任务,但我假设它返回,因为它是您的返回类型