I have the following interface that returns the generic parameter of type T using a callback...
public interface IDoWork { T DoWork(); }
Unfortunately, they can't be combined.
You can see this in the framework - that's why there is a separate Task and Task class, for example.
That being said, you can often share implementations in this type of scenario by using IDoWork and passing null for values, etc.
IDoWork
null