问题
I have the following interface that returns the generic parameter of type T using a callback...
public interface IDoWork<T>
{
T DoWork();
}
however I also have the following interface as well, but it won't invoke a callback since it returns void.
public interface IDoWork
{
void DoWork();
}
Can I combine these two interfaces and use runtime logic to determine the difference? How can I do that?
回答1:
Unfortunately, they can't be combined.
You can see this in the framework - that's why there is a separate Task and Task<T> class, for example.
That being said, you can often share implementations in this type of scenario by using IDoWork<object>
and passing null
for values, etc.
回答2:
return type is a part of method signature, so T DoWork() and void DoWork() are different, and void is not a type and it is not a null
. It is an indication there is nothing in evaluation stack on return from method.
来源:https://stackoverflow.com/questions/10644495/c-sharp-generics-if-t-is-a-return-type-can-it-also-be-void-how-can-i-combine