最近在完善自己的项目,使用Func<T>扩展自己的底层函数。
在C#中委托Action<T>是无返回值的,Func<T>是有返回值的。
一个Func<int, string>类型的参数,我们可以使用 string GetValue(int)这个函数的函数名GetValue作为参数,也可以使用(v => v.ToString())做为参数。
我今天自己写的一个复杂点的函数声明和调用。
Task BindMappings(
string id,
IEnumerable<string> targetIds,
Func<string, Task<IEnumerable<string>>> GetMappingIdsById,
Func<string, Task<IEnumerable<T>>> GetMappingsById,
Func<string, string, T> CreateEntity
);
await _repository.BindMappings(postId, catalogIds, this.GetCatalogIdByPostId, GetMappingsByPostId, this.CreateEntity);
//await _repository.BindMappings(postId, catalogIds, this.GetCatalogIdByPostId, (async id => await GetMappingsByPostId(id)), this.CreateEntity);