C #: substituindo tipos de retorno
Existe maneira de substituir tipos de retorno em c #? Se sim, como e se não o porquê e o que é uma maneira recomendada de fazer isso?
Meu caso é que eu tenho uma interface com uma classe base abstrata e descendentes disso. Eu gostaria de fazer isso (ok, não realmente, mas como exemplo!):
<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
naturalmente herda dePoo
.
Minha razão para querer isso é para que aqueles que usamCat
objetos poderiam usar oExcrement
propriedade sem ter que lançar oPoo
para dentroRadioactivePoo
enquanto, por exemplo, oCat
ainda poderia ser parte de umAnimal
lista onde os usuários podem não estar necessariamente cientes ou se preocuparem com seu cocô radioativo. Espero que tenha feito sentido ...
Tanto quanto eu posso ver o compilador não permite isso, pelo menos. Então eu acho que é impossível. Mas o que você recomendaria como uma solução para isso?