【问题标题】:Is there a way to make derived classes override ToString()?有没有办法让派生类覆盖 ToString()?
【发布时间】:2010-11-22 20:31:13
【问题描述】:

(我正在使用 .NET 4.0 beta,C#。)

我有一个接口,从这个接口派生的所有类都应该实现自定义ToString() 逻辑。这可以强制执行吗?如果有,怎么做?

【问题讨论】:

  • 如果你需要一个类来覆盖ToString(),那么你暗示ToString()的契约比通常使用的更强大。如果是这样,那么定义一个单独的方法,而不是为您的目的重复使用ToString(),可能是一个更好的选择。
  • 有可能。我的情况是我想让人们知道“如果你在任何类型的IMyInterface 上调用ToString(),你会得到与每个IMyInterface 应该包含的独特数据类型有关的东西,而不仅仅是通常的实现会给你类似 IIRC 类的名称。

标签: c# .net inheritance interface tostring


【解决方案1】:

不通过接口。

您需要为此使用抽象类。

-- 编辑

您可以将“ToString”重新声明为抽象:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多