F#:如何将Json.NET [JsonConstructor]属性应用于主构造函数?

Bra*_*ins 5 f# json json.net

我试图在F#中做一些事情,如Json.NET文档中JsonConstructorAttribute示例:

public class User
{
    public string UserName { get; private set; }
    public bool Enabled { get; private set; }

    public User()
    {
    }

    [JsonConstructor]
    public User(string userName, bool enabled)
    {
        UserName = userName;
        Enabled = enabled;
    }
}
Run Code Online (Sandbox Code Playgroud)

F#中的模拟类似于以下内容,但我在以下位置出现错误[<JsonConstructor>]:

[<JsonConstructor>] // ERROR! (see below)
type User (userName : string, enabled : bool) =
    member this.UserName = userName
    member this.Enabled = enabled
Run Code Online (Sandbox Code Playgroud)

错误是

此属性对此语言元素无效

那么,我如何用主要构造函数装饰[<JsonConstructor>]

Bra*_*ins 6

事实证明,这很容易.通过放置[<JsonConstructor>]在主构造函数的参数列表之前来定位主构造函数:

type User [<JsonConstructor>] (userName : string, enabled : bool) =
    member this.UserName = userName
    member this.Enabled = enabled
Run Code Online (Sandbox Code Playgroud)