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