好的,我有许多从基类派生的不同类。这个基类是一个包含常用方法的抽象。
其中一种方法是一种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
}
}