F#中的System.String扩展成员用于Chars

时间:2016-09-06 15:33:18

标签: f#

我已经阅读了System.String的文档和源代码。我可以看到默认索引器是使用此[int index]定义的,并且使用了别名“Chars”。我想通过编写以下代码来扩展它。

type System.String with
    member self.Chars (boolean:bool) = if boolean then self.[0] else self.[1]

printfn "%c" ("abc".[false])
printfn "%c" ("abc".Chars(false))

之所以如此,是因为我看过其他文章和代码片段,指出我有这种能力的想法。我现在正试图测试它。我还注意到System.String被定义为Sealed。

[<Sealed>]

我一直在做很多搜索,并查看像fssnip.net和Tomas P的文章以及Stackoverflow这样的网站。我错过了什么?

1 个答案:

答案 0 :(得分:2)

这不起作用的原因是因为Chars是属性的别名而不是方法本身。扩展方法似乎不可能在属性上。

即使它是一个参数获取,也必须创建一个通用版本,并且可能需要指向一个我可以创建我的约束版本的方法。 @Ringil带领我朝着正确的方向前进。谢谢。美好的一天。