Hi All, 

I am currently using Protobuf serializer in my C# project. Currently I am 
serializing my Objects using "
[ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]". The serialized 
objects are stored in database and deserialized when needed. I have now 
landed in a position that requires me to add new DataMembers to existing 
object. I want to be able to do this without breaking backward 
compatibility (while deserializing) of my current serialized objects. 

Is there a way for me to check what order does the Protobuf 
serialize/deserialize objects? 

e.g of the Object being serialized: 

    [ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]

    public class Product 
    {
        [DataMember]
        public int Id { get; set; }
 
        [DataMember]
        public string Name { get; set; }
 
        [DataMember]
        public double Quantity { get; set; }


        [DataMember]
        public bool? IsAvailable { get; set; }

    }

    If I can know what order they are currently being serialized then I can use 
the "Order" data member attribute and make sure that the additional fields are 
ordered at the end. Hopefully this will retain backward compatibility while 
deserializing. e.g:


    public class Product 

    {
        [DataMember(Order = 1)]

        public int Id { get; set; }
  

        [DataMember(Order = 2)]

        public double Quantity { get; set; }


        [DataMember(Order = 3)]

        public bool? IsAvailable { get; set; }


        [DataMember(Order = 4)]

        public string Name { get; set; }
 

        [DataMember(Order = 5)]

        public string NewField1 { get; set; }
 

        [DataMember(Order = 6)]

        public string NewField2 { get; set; }

    }


Any ideas? 

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to