J'ai trois classes qui retourneront chacune un résultat légèrement différent.Comment avoir une méthode abstraite retourne un type abstrait avec des implémentations concrètes?
// interfact to a king
public interface IKing{
public Result Get();
}
// main abstract class
public abstract class King:IKing{
public abstract Result Get();
}
// main abstract result
public abstract class Result{
public int Type {get;set;}
}
// KingA result
public class ResultA:Result{
...
}
// KingB result
public class ResultB:Result{
...
}
// concrete implementations
public class KingA:King{
public override ResultA Get(){
return new ResultA;
}
}
public class KingB:King{
public override ResultB Get(){
return new ResultB
}
}
Cela ne fonctionnera pas depuis la King
méthode surchargée de Get
attend la classe Result
et n'acceptera pas ses enfants ResultA
et ResultB
.
Y a-t-il une meilleure approche que je peux prendre?
Une chose que je n » De la même manière, il est nécessaire que les classes appelant le code doivent être conscientes de la distribution, puis s'assurer que la méthode a renvoyé la bonne classe de résultats. L'utilisation de génériques résout ces problèmes. – Kenoyer130