C#泛型:如果T是一个返回类型,可以将它也是无效? 我怎么能这些接口结合在一起?(C# Gene

2019-06-24 13:42发布

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

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

不过我也有下面的接口为好,但因为它返回void也不会调用回调。

public interface IDoWork
{
    void DoWork();
}

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

Answer 1:

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

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

这就是说,通常可以通过使用共享在这种类型的情况下的实施方式IDoWork<object>并通过null为值等



Answer 2:

返回类型是方法签名的一部分,因此T DoWork的()和空隙的DoWork()是不同的,并且空隙不是一个类型,它不是一个null 。 这是没有什么计算堆栈从方法返回的指示。



文章来源: C# Generics: If T is a return type, can it also be void? How can I combine these interfaces together?