Расширение типа F # типа generi c с конкретным параметром типа - PullRequest
0 голосов
/ 07 февраля 2020

Можно ли сделать расширение типа для обобщенного c типа с конкретным параметром типа? Мне не удалось выполнить следующие синтаксисы:

Синтаксис 1:

type Foo<Bar> with

    member this.BarStuff = // access `Bar´ specifics

Синтаксис 2:

type Foo<'T when 'T :> Bar> with

   member this.BarStuff = // access `Bar´ specifics

1 Ответ

3 голосов
/ 07 февраля 2020

Да, вы можете, но вы должны использовать синтаксис стиля C#:

open System.Runtime.CompilerServices

type Bar = Bar
type Foo<'t> = Foo of 't

[<Extension;Sealed>]
type Extensions =
    [<Extension>]
    static member BarStuff (this: Foo<Bar>) = ()


let x = (Foo Bar).BarStuff
...