好吧,我有许多不同的派生于基类的类。 该基类是一个包含通用方法的抽象。在基本抽象类中使用派生类型
其中一种方法是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
可能会更好地实现这个通用接口? –
如何删除基类中的类型参数并仍然使该方法返回相应的派生类型。 –