在F#中实现IList <t>和IReadOnlyList <t>

时间:2016-09-03 09:26:14

标签: f#

我想在F#中为struct实现这两个接口,但它们共享很多成员。根据我发现的文档,我将必须明确地实现这两个接口。

F#中有没有办法实现它们而不重复普通成员的实现?

1 个答案:

答案 0 :(得分:4)

我认为在您的场景中运行良好的方法是将实际实现作为常规的非接口成员。然后,对于接口实现,只需重新暴露这些成员。类似的东西:

 member this.GetEnumerator() = ... // actual logic goes here
 ... // other members     

 interface IList<T> with
     member this.GetEnumerator() = this.GetEnumerator()
     ... // other members

 interface IReadOnlyList<T> with
     member this.GetEnumerator() = this.GetEnumerator()
     ... // other members