Est-il possible de supprimer des types de retour en C#? Si oui, comment, et si non, pourquoi et ce qui est une bonne façon de faire?
Mon cas est que j'ai une interface avec une classe de base abstraite et descendants. Je voudrais faire ceci (ok, pas vraiment, mais comme un exemple!) :
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
de cours en hérite Poo
.
Ma raison de vouloir ceci est fait de sorte que ceux qui utilisent Cat
objets pourraient utiliser l' Excrement
de la propriété sans avoir à lancer l' Poo
en RadioactivePoo
alors que par exemple l' Cat
pourrait encore faire partie d'un Animal
liste où les utilisateurs ne peuvent pas nécessairement être au courant ou se soucient de leur radioactifs poo. L'espoir qui fait sens...
Aussi loin que je peux voir le compilateur ne permet pas ceci au moins. Donc je suppose que c'est impossible. Mais que recommanderiez-vous comme solution?