我试图在F#中做一些事情,就像
Json.NET documentation中的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; } }
F#中的模拟类似于以下内容,但我在[< JsonConstructor>]的位置上收到错误:
[<JsonConstructor>] // ERROR! (see below) type User (userName : string,enabled : bool) = member this.UserName = userName member this.Enabled = enabled
错误是
This attribute is not valid for use on this language element
那么,我如何使用[< JsonConstructor>]装饰主构造函数?
解决方法
事实证明,这很容易.通过在主构造函数的参数列表之前放置[< JsonConstructor>]来定位主构造函数:
type User [<JsonConstructor>] (userName : string,enabled : bool) = member this.UserName = userName member this.Enabled = enabled