C #: переопределение типов возврата
Есть ли способ переопределить возвращаемые типы в C #? Если да, то как, а если нет, то почему и как это рекомендуется делать?
В моем случае у меня есть интерфейс с абстрактным базовым классом и его потомками. Я хотел бы сделать это (хорошо, не совсем, но в качестве примера!):
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(); } }
}
RadioactivePoo
конечно наследует отPoo
.
Моя причина хотеть это так, чтобы те, кто используетCat
объекты могут использоватьExcrement
собственность без необходимости бросатьPoo
вRadioactivePoo
в то время как, например,Cat
все еще может быть частьюAnimal
список, в котором пользователи могут не знать или заботиться о своем радиоактивном пуле. Надеюсь, что это имеет смысл ...
Насколько я вижу, компилятор, по крайней мере, не допускает этого. Так что я думаю, что это невозможно. Но что бы вы порекомендовали в качестве решения этой проблемы?