具有泛型约束的F#成员重载

时间:2014-12-09 19:48:33

标签: f#

是否可以使用通用约束执行成员重载?在这里,我试图创建和AddWithOption方法来支持值类型和引用类型。如果你看一下the gist,我会展示一些尝试来实现这一目标。

enter image description here

我的解决方法只是不要使成员超载。我将一个值类型重命名为AddWithOptionValue。但是,如果超载工作会很酷。有任何想法吗?

1 个答案:

答案 0 :(得分:8)

约束不是方法签名的一部分(根据 ECMA 335,I.8.6.1.5方法签名),这意味着在CIL中,您不能拥有两种签名仅在约束条件上有所不同的方法。为了在CIL中编码这样的签名,需要使用可选或必需的修饰符,但这不是很简单,今天F#不会这样做。