わかりました、基本クラスから派生したさまざまなクラスがいくつかあります。この基本クラスは、一般的なメソッドを含む抽象です。
メソッドの 1 つはメソッドでありCopy
、すべての派生クラスに存在する必要があるため、基本クラスに配置しました。derived type
しかし、私はそれがベースでもオブジェクトでもないものを返したいと思っています。
そのために得た解決策は、型パラメーターを使用することです。
abstract class CopyableClass<T>
{
public abstract T Copy();
}
class DerivedClass : CopyableClass<DerivedClass>
{
public override DerivedClass Copy()
{
//do what is needed for copy and return a new DerivedClass
}
}
つまり、ここでの主な目的は
基本クラスの型パラメーターを削除し、引き続きメソッドが対応する派生型を返すようにします。
1 つの回避策。
これまでに私ができる最善のことは、以下のコメントの1つですが、それでもジェネリックパラメーターを使用しています
abstract class BaseClass
{
//base methods not related to deriving type
}
interface ICopyable<T>
{
T Copy();
}
class DerivedClass : BaseClass, ICopyable<DerivedClass>
{
public DerivedClass Copy()
{
//do what is needed for copy and return a new DerivedClass
}
}