我想为默认函数实现一个相等和比较功能的接口。
如果我从成员中删除IKeyable<'A>除Key成员之外的所有内容,则它是有效接口,只要不添加默认实现即可。从中删除其他接口实现IKeyable<'A>,并仅保留默认成员将以相同的结果结束。
type IKeyable<'A when 'A: equality and 'A :> IComparable> =
abstract member Key : 'A
default this.Equals obj = // hidden for clarity
default this.GetHashCode () = // hidden for clarity
interface IEquatable<'A> with
member this.Equals otherKey = // hidden for clarity
interface IComparable<'A> with
member this.CompareTo otherKey = // hidden for clarity
interface IComparable with
member this.CompareTo obj = // hidden for clarity
type Operation =
{ Id: Guid }
interface …Run Code Online (Sandbox Code Playgroud)