当前位置:  开发笔记 > 编程语言 > 正文

强制接口的子类来实现ToString

如何解决《强制接口的子类来实现ToString》经验,为你挑选了3个好方法。

假设我有一个接口IFoo,我希望所有子类都IFoo覆盖Object的ToString方法.这可能吗?

简单地将方法签名添加到IFoo不起作用:

interface IFoo
{
    String ToString();
}

因为所有子类都扩展Object并以这种方式提供实现,所以编译器不会抱怨它.有什么建议?



1> Jon Skeet..:

我不相信你可以通过界面来做到这一点.您可以使用抽象基类:

public abstract class Base
{
    public abstract override string ToString(); 
}



2> Andrew Peter..:
abstract class Foo
{
    public override abstract string ToString();
}

class Bar : Foo
{
    // need to override ToString()
}


问题是"我可以用界面做这个吗?",而不是"我该怎么做?",但无论如何,谢谢.

3> Mark Simpson..:

Jon&Andrew:这个抽象技巧非常有用; 我不知道你可以通过宣称它是抽象的来结束链条.干杯:)

在过去,当我要求在派生类中覆盖ToString()时,我总是使用如下模式:

public abstract class BaseClass
{
    public abstract string ToStringImpl();

    public override string ToString()
    {
        return ToStringImpl();
    }    
}

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有