如何使用protoBuffer序列化作为类成员显示的DataTable

时间:2018-06-22 12:25:45

标签: c# serialization datatable protobuf-net

我正在尝试使用protobuf-net序列化一个类。该类包含Datatable成员。我可以成功地序列化和反序列化该类,而无需Dat​​aTable但可以使用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();
        }

0 个答案:

没有答案