提问人:John Saunders 提问时间:5/29/2015 最后编辑:John Saunders 更新时间:5/29/2015 访问量:120
在 MongoDB 中为 MemberMap 指定自定义序列化程序 - 一个实例还是多个实例?
Specifying Custom Serializer for MemberMap in MongoDB - One Instance or Many?
问:
在为单个属性指定自定义序列化时,我目前为每种情况使用一个单独的实例:
BsonClassMap.RegisterClassMap<MyClass>(map =>
{
map.AutoMap();
map.SetIgnoreExtraElements(true);
map.MapProperty(p=>Property1).SetSerializer(new MyCustomSerializer());
map.MapProperty(p=>Property2).SetSerializer(new MyCustomSerializer());
}
我可以在这两种情况下指定相同的实例吗?
var ser = new MyCustomSerializer();
map.MapProperty(p=>Property1).SetSerializer(ser);
map.MapProperty(p=>Property2).SetSerializer(ser);
我怀疑这是可以的,因为可以使用
[BsonSerializer(typeof(MyCustomSerializer))]
public string Property1 { get; set; }
[BsonSerializer(typeof(MyCustomSerializer))]
public string Property2 { get; set; }
这没有使用任何实例
答:
1赞
Craig Wilson
5/29/2015
#1
由于它是您的自定义序列化程序,因此您需要确保在实例级别不存储任何状态。从司机的角度来看,我们不在乎。
仅供参考:当您使用属性表单时,我们使用默认 ctor 创建序列化程序的 2 个独立实例。因此,您的代码版本会有所不同,尽管只要您的序列化程序运行良好就无关紧要。
评论
0赞
John Saunders
5/29/2015
好的,那太好了。我们最终可能会对多个类中的属性使用相同的序列化程序,并且可能希望每个类一个实例。
评论