C#泛型:如果T是返回类型,它也可以是无效的吗?如何将这些接口组合在一起?

goo*_*ate 22 c# generics api api-design nul

我有以下接口,使用回调返回类型T的泛型参数...

public interface IDoWork<T>
{
    T DoWork();
}
Run Code Online (Sandbox Code Playgroud)

但是我也有以下接口,但它不会调用回调,因为它返回void.

public interface IDoWork
{
    void DoWork();
}
Run Code Online (Sandbox Code Playgroud)

我可以组合这两个接口并使用运行时逻辑来确定差异吗?我怎样才能做到这一点?

Ree*_*sey 21

不幸的是,他们不能合并.

您可以在框架内看到这一点-这就是为什么有一个单独的TaskTask<T>类,例如.

话虽这么说,您通常可以通过使用IDoWork<object>和传递null值等来共享此类场景中的实现.