我有一个 API 控制器,其方法返回 IEnumerable。方法 GetProjects 返回
List<(string, object)>
:
[HttpGet]
[Route("getProjects")]
public async Task<IEnumerable<(string, object)>> GetProjects(string departmentName)
{
var result = await dataService.GetProjects(departmentName);
return result.AsEnumerable();
}
在从 API 返回之前,结果应该转换为
IEnumerable
还是可以作为 Task<List<(string, object)>>
返回?
.NET 指南的建议是应该从 API 返回 List:
dotnet 标准设计指南 集合指南
在上述情况下将 List 转换为 IEnumerable 有什么好处?这是附加操作。 IEnumerable 和 List 的 Angular 服务结果看起来相同。它看起来像 json 中的数组。
如果对 dataService.GetProjects 的调用已返回 List,则调用 AsEnumerable() 返回 IEnumerable 没有任何好处。
返回 IEnumerable 在其他情况下可能有好处:它隐藏了具体实现(例如 List),这允许您将来更改底层集合类型,而不会影响方法签名(IEnumerable 可以表示广泛的集合,提供更大的灵活性)
这里你可以简化为
[HttpGet]
[Route("getProjects")]
public async Task<List<(string, object)>> GetProjects(string departmentName)
{
var result = await dataService.GetProjects(departmentName);
return result;
}