假设:
具有属性bool Success {get;}
Task<PolicyResult>
()
我目前正在做的事情:
我可以通过这种方式获得成功属性的价值:
PolicyResult result = await myTask;
bool success = result.Success
现在我想更改Task<PolicyResult>
以获取包裹原始任务的Task<bool>
,
为此我已经完成了这段代码:
Task<bool> foo = myTask.ContinueWith(i => i.Result.Success);
但这对我来说很有气味,因为现在显然我只想选择特定属性。
有更好/更优雅的方式吗?我在监督什么吗?
答案 0 :(得分:5)
您可以创建扩展方法:
public static async Task<U> Select<T, U>(this Task<T> task, Func<T, U> selector)
{
return selector(await task);
}
Task<bool> foo = myTask.Select(r => r.Success);