c# - 我可以在 C# 的子接口(interface)中重写父接口(interface)方法吗?

标签 c# .net documentation

我有一个接口(interface)层次结构,我正在尝试使用适当的 .net xml 注释对其进行记录。我有一个层次结构中所有接口(interface)共享的方法,我在顶层声明,我想对子接口(interface)给出更具体的评论。

换句话说,像这样:

public interface IAnimal
{
    /// <summary>Returns a string often spoken by this animal.</summary>
    string speak();
}

public interface IDog : IAnimal
{
    /// <summary>Returns a string representation of some barking noise.</summary>
    string speak();
}

public interface IDuck : IAnimal
{
    /// <summary>Returns a string representation of some quacking noise.</summary>
    string speak();
}

当我尝试编译它时,我收到关于“方法隐藏”的警告,我很确定我不想这样做。尝试在方法前插入“override”和“virtual”关键字会产生错误而不是警告。有什么方法可以在不破坏类型之间继承的情况下获得不同的描述以显示子接口(interface)上的方法?

最佳答案

对您的问题的简短回答是“否”。在 C# 中,除非重写派生方法,否则无法修改派生方法,而且由于无法重写接口(interface)方法,因此派生接口(interface)中的任何新声明都只会覆盖原始方法。

派生接口(interface)实际上只是添加了更多方法,它不能以任何方式更改、扩充或调整基本定义,包括 XML 注释——只是没有地方放置这些。如果您改用抽象基类,当然是可能的,但即便如此,也只能人为地通过“覆盖”抽象方法来简单地调用基类。

关于c# - 我可以在 C# 的子接口(interface)中重写父接口(interface)方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27336094/

相关文章:

c# - 停止 HSTS HTTPS 执行

c# - 将时间值向下舍入到最接近的刻钟

c# - 如何按日、周、月自动发送邮件?

javascript - 为什么ajax一个接一个发送请求

.net - DataTable.Merge 和 DataTable.ImportRow 不会更改 RowState

documentation - doxygen 中的回车符?

Firebase Cloud Firestore "Request/response"文档

c# - 如何使用 Open XML 将超链接添加到 Word docx 中?

c# - 如何在 WPF 中触发检查或取消选中事件后启用/禁用复选框?

javascript - 有比w3schools更全面的JavaScript函数引用吗?