23

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

public interface IDoWork<T>
{
    T DoWork();
}

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

public interface IDoWork
{
    void DoWork();
}

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

4

2 回答 2

21

不幸的是,它们不能合并。

你可以在框架中看到这一点——这就是为什么有一个单独的TaskTask<T>类,例如。

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

于 2012-05-17T22:47:53.177 回答
2

返回类型是方法签名的一部分,因此 T DoWork() 和 void DoWork() 是不同的,并且 void 不是类型,也不是null. 这表明从方法返回时评估堆栈中没有任何内容。

于 2012-05-17T22:59:38.780 回答