假设我有一个接口IFoo
,我希望所有子类都IFoo
覆盖Object的ToString
方法.这可能吗?
简单地将方法签名添加到IFoo不起作用:
interface IFoo { String ToString(); }
因为所有子类都扩展Object
并以这种方式提供实现,所以编译器不会抱怨它.有什么建议?
我不相信你可以通过界面来做到这一点.您可以使用抽象基类:
public abstract class Base { public abstract override string ToString(); }
abstract class Foo { public override abstract string ToString(); } class Bar : Foo { // need to override ToString() }
Jon&Andrew:这个抽象技巧非常有用; 我不知道你可以通过宣称它是抽象的来结束链条.干杯:)
在过去,当我要求在派生类中覆盖ToString()时,我总是使用如下模式:
public abstract class BaseClass { public abstract string ToStringImpl(); public override string ToString() { return ToStringImpl(); } }