基本的に私の設定はこれです:基本クラスの型に合わせて戻り値の型を持つ基本クラスを持つことは可能ですか?
public abstract class BaseObject{
public abstract BaseObject Clone();
}
public class DerivedObject : BaseObject{
public DerivedObject Clone()
{
//Clone logic
}
}
メソッドをオーバーライドする場合戻り値の型を変更することはできませんので、上記のコードはコンパイルされません。
すべての派生型のCloneメソッドが、独自の型の引数を返すことは可能でしょうか(おそらくジェネリックを介して)?
この解決策が痛みを伴う可能性があるさまざまな方法のいくつかを説明できますか? 私は、Cloneメソッドを使用するたびに型キャストする必要がないという苦痛を軽減するために、この苦痛を払う価値があるかどうかを判断しようとしています。 – chrischu
@Mehrdad:固定、ありがとう。 @crischu:もう一つのクラスが 'BaseObject 'から派生することができないとは言いません。 IMessage ここで、TMessage:IMessage ここで、TBuilder:IBuilder は、他のタイプとやり取りする必要がある場合、例えば、不快な。それはほとんど大丈夫ですが、あなたはクールな頭を保つ必要があります。 –