我正在尝试使用protobuf-net序列化一个类。该类包含Datatable成员。我可以成功地序列化和反序列化该类,而无需DataTable但可以使用DataTable,它显示异常:没有为DataTable定义序列化程序。 但是,我尝试使用ProtoBuf.Data分别序列化DataTable,并且可以使用! 但是我想要一些可以使用protobuf-net序列化整个类(包括DataTable)的东西。 MyCodes:
public enum Name { SS,RR};
[ProtoContract(SkipConstructor = true)]
class StaticField
{
[ProtoMember(1)]
public static int o = 0;
[ProtoMember(7)]
public IA Aa;
[ProtoMember(2)]
private readonly int s = 12;
[ProtoMember(3)]
public Name name { get; set; }
public DataTable dataTable { get; set; }
[ProtoMember(5)]
public Dictionary<int, string> GetNames = new Dictionary<int, string>();
public StaticField()
{
FillUpDict();
dataTable = GetTable();
}
我的用于序列化StaticField类的代码:
StaticField.No = 2;
StaticField staticField
= new StaticField();
staticField.Aa = new A();
staticField.name = Name.RR;
using (var stream = new MemoryStream())
{
Serializer.Serialize(stream, staticField);
array = stream.ToArray();
}
我的用于分别序列化DataTable的代码:
using (var stream = new MemoryStream())
using (IDataReader reader = staticField.dataTable.CreateDataReader())
{
DataSerializer.Serialize(stream, reader);
array2 = stream.ToArray();
}