我正在尝试制作一个具有Id
属性的接口,然后使用该ID来实现IEquatable
。
但是,实现中间接口的类抛出了一个错误,即它没有实现IEquatable
。
我猜想这种功能根本就不存在,但是我在努力描述到底是什么功能,并为我想做的事情找到任何解决方法。
我要做的是允许类简单地实现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的屏幕截图:
答案 0 :(得分:0)
所以我想通了。
如果我(使用IEquatable标识符)明确地重写了IntermediateInterface,则它按我的预期工作。
屏幕截图:
编辑:
这里有一些正确的代码(如文本!):
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; }
}