C#:这可能吗? (为子接口中的IEquatable提供默认实现)

C#: Is this possible? (Providing default implementation for IEquatable in sub-interface)

我正在尝试创建一个具有 Id 属性 的接口,然后使用该 ID 实现 IEquatable

但是,实现中间接口的 class 抛出一个错误,表明它没有实现 IEquatable

我猜这种类型的功能根本不存在,但我正在努力描述这个功能 是什么 并找到任何解决方法我想做。

我想做的是让 classes 简单地实现 IntermediateInterface 并立即通过 Id 属性 要求的彼此相等接口。

这是文本代码:

public interface IntermediateInterface<T> : IEquatable<T>
    where T : IntermediateInterface<T>
{
    int Id { get; set; }
    public new bool Equals(T other)
    {
        return Id.Equals(other.Id);
    }
}

public class ActualType : IntermediateInterface<ActualType> {
    public int Id { get; set; }
}

这是错误文本 Error CS0535 'ActualType' does not implement interface member 'IEquatable<ActualType>.Equals(ActualType)'

这是来自 visual studio 的屏幕截图:

所以我想通了。

如果我有 IntermediateInterface 显式覆盖 Equals(使用 IEquatable 标识符),它会按我预期的方式工作。

截图:

编辑:

这是一些正确的代码(作为文本!):

public interface IntermediateInterface<T> : IEquatable<T>
    where T : IntermediateInterface<T>
{
    int Id { get; set; }
    bool IEquatable<T>.Equals(T other)
    {
        return Id == other?.Id;
    }
}

public class ActualType : IntermediateInterface<ActualType> {
    public int Id { get; set; }
}