C #: anulando tipos de retorno

¿Hay manera de anular los tipos de retorno en C #? Si es así, ¿cómo, y si no, por qué y cuál es una forma recomendada de hacerlo?

Mi caso es que tengo una interfaz con una clase base abstracta y descendientes de eso. Me gustaría hacer esto (bueno, no realmente, ¡pero como ejemplo!):

<code>public interface Animal
{
   Poo Excrement { get; }
}

public class AnimalBase
{
   public virtual Poo Excrement { get { return new Poo(); } }
}

public class Dog
{
  // No override, just return normal poo like normal animal
}

public class Cat
{
  public override RadioactivePoo Excrement { get { return new RadioActivePoo(); } }
}
</code>

RadioactivePoo por supuesto hereda dePoo.

Mi razón para querer esto es para que aquellos que usanCat objetos podrían usar elExcrement propiedad sin tener que echar elPoo dentroRadioactivePoo mientras que por ejemplo elCat Todavía podría ser parte de unaAnimal Haga una lista de los usuarios que no necesariamente deben ser conscientes o preocuparse por su caca radioactiva. Espero que tenga sentido ...

Por lo que puedo ver, el compilador no permite esto al menos. Así que supongo que es imposible. Pero, ¿qué recomendaría usted como solución a esto?

Respuestas a la pregunta(13)

Su respuesta a la pregunta