是否可以使用通用约束执行成员重载?在这里,我试图创建和AddWithOption
方法来支持值类型和引用类型。如果你看一下the gist,我会展示一些尝试来实现这一目标。
我的解决方法只是不要使成员超载。我将一个值类型重命名为AddWithOptionValue
。但是,如果超载工作会很酷。有任何想法吗?
答案 0 :(得分:8)
约束不是方法签名的一部分(根据 ECMA 335,I.8.6.1.5方法签名),这意味着在CIL中,您不能拥有两种签名仅在约束条件上有所不同的方法。为了在CIL中编码这样的签名,需要使用可选或必需的修饰符,但这不是很简单,今天F#不会这样做。