使用工厂方法反序列化对象
本文关键字:反序列化 对象 方法 工厂 | 更新日期: 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项目下做。
克雷格