一个方法中支持Task或Task <TResult>的接口
Interface that supports Task or Task <TResult> in one method
我正在写一个使用工厂模式的API。
我有一个接口:
public interface IAbstractProduct<TRes, TCom>
{
Task<TRes> ExecuteAsync(TCom command);
}
任务 returns TRes
,但有时我只想 return Task
而没有 TResults
。
是否可以插入 TRes
使得 Task<TRes> = Task
?
或者使用其他方式使接口 IAbstractProduct
处理 Task
和 Task<TRes>
?
不,最终。你可以做的是:
- 对于引用类型(如果你可以添加
where TRes : class
),也许 return 一个 Task<TRes>
结果是 null
- 对于值类型(如果可以添加
where TRes : struct
),return一个Task<TRes?>
但是:如果 TRes
可以是 any 类型,则否:这是不可能的。在那种情况下,您可以考虑类似 Task<(bool HasResult, TRes Result)>
的东西 - 实际上是手动构造的可选类型。
我正在写一个使用工厂模式的API。
我有一个接口:
public interface IAbstractProduct<TRes, TCom>
{
Task<TRes> ExecuteAsync(TCom command);
}
任务 returns TRes
,但有时我只想 return Task
而没有 TResults
。
是否可以插入 TRes
使得 Task<TRes> = Task
?
或者使用其他方式使接口 IAbstractProduct
处理 Task
和 Task<TRes>
?
不,最终。你可以做的是:
- 对于引用类型(如果你可以添加
where TRes : class
),也许 return 一个Task<TRes>
结果是null
- 对于值类型(如果可以添加
where TRes : struct
),return一个Task<TRes?>
但是:如果 TRes
可以是 any 类型,则否:这是不可能的。在那种情况下,您可以考虑类似 Task<(bool HasResult, TRes Result)>
的东西 - 实际上是手动构造的可选类型。