【发布时间】:2014-06-25 20:51:51
【问题描述】:
我有一个“复杂”类,其中包含一个我想序列化为二进制文件的属性:
public class MyClassA{
public MyClassB myClassB {get;set;}
public MyClassB myClassC {get;set;}
[BsonIgnore]
public MyClassB myClassD {get;set;}
private byte[] myClassDBin {get;set}
}
我想只在 RAM 中保留 myClassD 对象,但我也想只序列化 myClassDBin 对象。第一个条件很容易在 custructor 中实现:
public class MyClassA{
public MyClassB myClassB {get;set;}
public MyClassB myClassC {get;set;}
[BsonIgnore]
public MyClassB myClassD {get;set;}
private byte[] myClassDBin {get;set}
[BsonConstructor]
public MyClassA(MyClassB myClassB, MyClassC myClassC, MyClassDBin[] myClassDBin)
{
this.myClassB = myClassB;
this.myClassC = myClassC;
this.myClassDBin = myClassBin;
if(this.myClassDBin != null)
{
using(MemoryStream stream = new MemoryStream(this.myClassDBin))
{
this.myClassD = myClassD.Load(stream);//custom serializer
}
}
this.myClassDBin = null; //Keep only one object in RAM
}
}
这对于反序列化非常有效,但是序列化呢?如果我希望 myClassDBin 被序列化,我需要它始终不为空。我需要实现自定义序列化程序吗?这可能是一项漫长的任务,因为类 myClassB/C/D 是大类,使用 automapper 很容易......有没有像 XML 一样的接口,我们可以在序列化之前实现?
【问题讨论】:
标签: c# mongodb serialization