【发布时间】:2017-08-27 15:58:54
【问题描述】:
我读过this question,但在我的情况下它更简单,因为我不必使用Result 属性。所以我想知道我是否可以采用比 Stephen Cleary 的回答提供的更简单的方法。
假设我有这个简单的界面。
internal interface IBinaryDataReadable
{
Task Load(AsyncDataReader reader);
}
接口提供异步加载对象的方法。它不返回任何内容,因为加载结果是对象本身。
(接口是内部的,因此显式实现以避免暴露实现。)
这是我加载二进制数据的方式。
data = new BinaryData();
await ((IBinaryDataReadable)data).Load(reader);
我想让这个更流畅和详细,所以我写了这个 extension 方法
internal static Task<TData> Load<TData>(this TData data, AsyncDataReader reader)
where TData : IBinaryDataReadable
=> data.Load(reader).ContinueWith(t => data, TaskContinuationOptions.ExecuteSynchronously);
现在加载变成了这样。
data = await new BinaryData().Load(reader);
这里有什么我需要担心的吗?例如异常处理等?
【问题讨论】:
标签: c# generics task continuewith