F# 接口属性未序列化
如果我定义了一个记录来实现一个带有附加属性的接口,那么json.net不会序列化接口属性。如何让json.net序列化这些接口属性。这里有一个例子F# 接口属性未序列化,f#,json.net,F#,Json.net,如果我定义了一个记录来实现一个带有附加属性的接口,那么json.net不会序列化接口属性。如何让json.net序列化这些接口属性。这里有一个例子 open Newtonsoft.Json type IRecord = abstract member id : string type ARec = { Name : string } with interface IRecord with member this.id = this.Name let
open Newtonsoft.Json
type IRecord =
abstract member id : string
type ARec = {
Name : string
} with
interface IRecord with
member this.id = this.Name
let aRec = {Name = "John"}
JsonConvert.SerializeObject aRec
和JsonConvert.SerializeObject(aRec:>IRecord)
都会导致{“Name”:“John”}
但我期望{“Name”:“John”;“id”:“John”}
我尝试将
ShouldSerializeid
添加到接口中,但没有任何区别 所有的接口都是在f#中显式实现的,因此它似乎是的解决方案,即应用[JsonProperty]
,也应该在这里工作。。。但事实并非如此。据我所知,f#似乎将它们作为方法而不是属性来实现。与上面小提琴的c#port相比:您将看到f#typeARec
只有一个属性,而c#type有两个属性。