我有三個類,每個都會返回一個稍微不同的結果。如何讓抽象方法返回具體實現的抽象類型?
// 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
}
}
自Get
的King
覆蓋方法是期待Result
類這將無法正常工作,也不會接受其子ResultA
和ResultB
。
我可以採取更好的方法嗎?
有一兩件事我不t就像要求調用代碼的類必須知道轉換,然後確保該方法返回正確的結果類。泛型的使用解決了這些問題。 – Kenoyer130 2010-09-14 21:22:45