基本上我的设置是这样的:是否有可以调整基类类型的返回类型的基类?
public abstract class BaseObject{
public abstract BaseObject Clone();
}
public class DerivedObject : BaseObject{
public DerivedObject Clone()
{
//Clone logic
}
}
上面的代码不编译,因为它不可能覆盖方法时改变返回类型。
是否有可能实现每个派生类型的Clone方法返回它自己类型的参数(可能通过泛型)?
您能否描述一下这种解决方案可能会导致痛苦的各种方式? 我试图找出是否值得采取这种痛苦的痛苦,而不必每次都使用克隆方法来强制转换。 – chrischu 2009-08-07 20:37:38
@Mehrdad:修正,谢谢。 @crischu:好吧,没有什么可以说另一个类不能从'BaseObject'派生的 - 因为它不是万无一失的。另外如果你必须与其他类型进行交互,它可以在协议缓冲区中获得*真正*多毛* IMessage 其中TMessage:IMessage 其中TBuilder:IBuilder '例如。讨厌。大多数都没问题,但你需要保持冷静的头脑。 –
2009-08-07 20:40:35