我正在尝试在泛型类(Xceed.Wpf.Toolkit.NumericUpDown
)上定义扩展方法,但是将该泛型限制为Nullable<_>
,但我无法弄清楚语法。我想要的本质是
type NumericUpDown<Nullable<_>> with
member x.getVal() = x.Value.GetValueOrDefault()
member x.setVal v = x.Value <- Nullable v
但不会编译。我在这个主题上尝试了几种变体,但没有任何效果。有没有办法做到这一点?
答案 0 :(得分:3)
我不知道你要扩展的课程但是从F#3.1开始你应该能够写下并使用它:
open System.Runtime.CompilerServices
[<Extension>]
type NumericUpDownExtensions () =
[<Extension>]
static member getVal(x: NumericUpDown<Nullable<'a>>) = x.Value.GetValueOrDefault()
[<Extension>]
static member setVal(x: NumericUpDown<Nullable<'a>>, v) = x.Value <- Nullable v