我已经阅读了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这样的网站。我错过了什么?
答案 0 :(得分:2)
这不起作用的原因是因为Chars是属性的别名而不是方法本身。扩展方法似乎不可能在属性上。
即使它是一个参数获取,也必须创建一个通用版本,并且可能需要指向一个我可以创建我的约束版本的方法。 @Ringil带领我朝着正确的方向前进。谢谢。美好的一天。