繁体   English   中英

支持Task或Task的接口<tresult>在一种方法中</tresult>

[英]Interface that supports Task or Task <TResult> in one method

我正在写一个使用工厂模式的 API。

我有一个界面:

public interface IAbstractProduct<TRes, TCom>
{
    Task<TRes> ExecuteAsync(TCom command);
}

Task 返回TRes ,但有时我只想返回Task而不返回TResults 是否可以插入一个TRes使得Task<TRes> = Task

或者使用其他方式使接口IAbstractProduct处理TaskTask<TRes>

不,最终。 可以做的是:

  • 对于引用类型(如果您可以添加where TRes: class ),也许返回一个Task<TRes>结果是null
  • 对于值类型(如果您可以添加where TRes: struct ),返回一个Task<TRes?>

但是:如果TRes可以是任何类型,那么不:这是不可能的。 在这种情况下,您可以考虑类似Task<(bool HasResult, TRes Result)> - 实际上是手动构造的可选类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM