gpt4 book ai didi

反序列化 F# 列表的 MongoDb 错误

转载 作者:可可西里 更新时间:2023-11-01 10:02:12 26 4
gpt4 key购买 nike

所以我有一个简单的对象

type DbObject() = 
member val Id = ObjectId.GenerateNewId().ToString() with get, set
member val Name = "" with get, set
type Item() =
inherit DbObject()
member val Description = "" with get, set
member val Refs : list<string> = [] with get, set

当我将它插入我的 MongoDB 数据库时,它工作得很好,但每当我尝试接收它时,我都会收到以下错误。

System.FormatException: An error occurred while deserializing the Material property of class Item: Type 'Microsoft.FSharp.Collections.FSharpList`1[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]' does not have a suitable constructor or Add method. ---> MongoDB.Bson.BsonSerializationException: Type 'Microsoft.FSharp.Collections.FSharpList`1[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]' does not have a suitable constructor or Add method.

我猜问题出在 FSharpList 没有反序列化器,但它怎么能很好地序列化,难道它不应该双向工作吗?让它工作的唯一方法是自定义序列化程序吗?

最佳答案

F# 列表是不可变的单链表,但根据错误消息判断,该库希望找到一个带有 Add 的可变列表。方法就可以了。为了满足这一点,只需使用 ResizeArray - 它是 System.Collections.Generic.List<_> 的 F# 同义词.

    member val Refs : ResizeArray<string> ...

关于反序列化 F# 列表的 MongoDb 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48384147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com