C # Genéricos: si T es un tipo de retorno, ¿también puede ser anulado? ¿Cómo puedo combinar estas interfaces juntas?

Tengo la siguiente interfaz que devuelve el parámetro genérico de tipo T utilizando una callback …

public interface IDoWork { T DoWork(); } 

sin embargo, también tengo la siguiente interfaz, pero no invocará una callback ya que devuelve vacío.

 public interface IDoWork { void DoWork(); } 

¿Puedo combinar estas dos interfaces y usar la lógica de tiempo de ejecución para determinar la diferencia? ¿Cómo puedo hacer eso?

Desafortunadamente, no se pueden combinar.

Puede ver esto en el marco, por eso hay una clase separada de Task y Task , por ejemplo.

Dicho esto, a menudo puede compartir implementaciones en este tipo de escenario utilizando IDoWork y pasando null para los valores, etc.

el tipo de retorno es una parte de la firma del método, por lo que T DoWork () y void DoWork () son diferentes, y void no es un tipo y no es un null . Es una indicación de que no hay nada en la stack de evaluación en el retorno del método.