好吧,我有許多不同的派生於基類的類。 該基類是一個包含通用方法的抽象。在基本抽象類中使用派生類型
其中一種方法是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
}
}
因此,主要目的這裏是
在基類中刪除類型參數,仍然使方法返回相應的派生類型。
一個解決辦法。
我能做迄今爲止最好的事情是下面的意見之一,但它仍然採用了通用的參數
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
}
}
那麼你的問題是什麼? – evanmcdonnal
可能會更好地實現這個通用接口? –
如何刪除基類中的類型參數並仍然使該方法返回相應的派生類型。 –