使用工厂方法反序列化对象

本文关键字:反序列化 对象 方法 工厂 | 更新日期: 2023-09-27 17:54:32

我有一个对象,它有一个用工厂方法创建的对象数组。序列化工作得很好,我可以看到对象上的所有属性,但是当反序列化时,对象数组上的属性没有被设置。

当文档反序列化回其原始对象结构时,我如何使用用于创建这些对象的工厂方法?

我已经尝试使用MapCreator这样:

BsonClassMap.RegisterClassMap<Attribute>(cm =>
            {
                cm.AutoMap();
                cm.MapCreator(a => Attribute.Create(a.Name, a.GetValue(), a.IsVisible, a.GroupName, a.Priority));
            });

但是我得到了下面的异常:

[MongoDB.Bson。BsonSerializationException] ={"对原型参数唯一允许的操作是访问字段或属性。"}

如果我需要创建自定义序列化器,我不确定如何反序列化对象数组,如何在bson读取器中迭代数组数据。

谢谢,约翰。

使用工厂方法反序列化对象

我认为问题是a.t getvalue()。每个参数必须映射回类中的属性或字段,而GetValue()不需要。Name、IsVisible、GroupName和Priority都是可映射的,但GetValue()不是,因为它是一个方法。记住,这是在告诉我们如何构造Attribute类。我们可以使用属性因为我们知道它们是如何被映射的。但是在当前版本的驱动程序中不可能映射方法。如果你想为映射方法提交一个特性请求,你可以在jira.mongodb.org的CSHARP项目下做。

克雷格