У меня есть три класса, каждый из которых будет возвращать немного разные результаты.
// 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
}
}
Это не будет работать, поскольку переопределенный метод King
для Get
ожидает класс Result
и не будет принимать его дочерние элементы ResultA
и ResultB
.
Есть ли лучший подход, который я могу выбрать?