C #: переопределение типов возврата

Есть ли способ переопределить возвращаемые типы в C #? Если да, то как, а если нет, то почему и как это рекомендуется делать?

В моем случае у меня есть интерфейс с абстрактным базовым классом и его потомками. Я хотел бы сделать это (хорошо, не совсем, но в качестве примера!):

<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 конечно наследует отPoo.

Моя причина хотеть это так, чтобы те, кто используетCat объекты могут использоватьExcrement собственность без необходимости бросатьPoo вRadioactivePoo в то время как, например,Cat все еще может быть частьюAnimal список, в котором пользователи могут не знать или заботиться о своем радиоактивном пуле. Надеюсь, что это имеет смысл ...

Насколько я вижу, компилятор, по крайней мере, не допускает этого. Так что я думаю, что это невозможно. Но что бы вы порекомендовали в качестве решения этой проблемы?

Ответы на вопрос(13)

Ваш ответ на вопрос