基本上我的設置是這樣的:是否有可以調整基類類型的返回類型的基類?
public abstract class BaseObject{
public abstract BaseObject Clone();
}
public class DerivedObject : BaseObject{
public DerivedObject Clone()
{
//Clone logic
}
}
上面的代碼不編譯,因爲它不可能覆蓋方法時改變返回類型。
是否有可能實現每個派生類型的Clone方法返回它自己類型的參數(可能通過泛型)?
您能否描述一下這種解決方案可能會導致痛苦的各種方式? 我試圖找出是否值得采取這種痛苦的痛苦,而不必每次都使用克隆方法來強制轉換。 – chrischu 2009-08-07 20:37:38
@Mehrdad:修正,謝謝。 @crischu:好吧,沒有什麼可以說另一個類不能從'BaseObject'派生的 - 因爲它不是萬無一失的。另外如果你必須與其他類型進行交互,它可以在協議緩衝區中獲得*真正*多毛* IMessage 其中TMessage:IMessage 其中TBuilder:IBuilder '例如。討厭。大多數都沒問題,但你需要保持冷靜的頭腦。 –
2009-08-07 20:40:35