Sorry - intended to cc the list for reference purposes

-------------------------------------------

This is protobuf-net specific; sorry for delay bit I'm on a family weekend
and my wife deliberately picks destinations far far away from cell towers.

To explain: protobuf-net always starts from the root type; the
most-base-type that it knows of as a contract. This means that you can
still deserialize the base-type information. This mimics the scenario where
you receive a message from an up-level caller who knows about a new
subtype. It will deserialize as much as it can, basically.

Does that answer things? Do you need more?
On 15 Mar 2013 23:35, "Wallace Turner" <wallacetur...@gmail.com> wrote:

> Consider these simple classes:
>
> [DataContract]
>>     public class Container
>>     {
>>         [DataMember(Order = 1)]
>>         public Order Order { get; set; }
>>     }
>>
>>     [DataContract]
>>     public class Order
>>     {
>>         [DataMember(Order = 1)]
>>         public string Field1 { get; set; }
>>     }
>>     [DataContract]
>>     public class SubOrder : Order
>>     {
>>         [DataMember(Order = 1)]
>>         public string Field2 { get; set; }
>>     }
>
>
>
> I have serialized a populated instance of Container to a base64 string:
>
> RuntimeTypeModel.Default[typeof(Order)].AddSubType(100, typeof(SubOrder));
>> var tmp = new Container() { Order = new SubOrder { Field1 = "field1",
>> Field2 = "field2" } };
>> Trace.WriteLine(Convert.ToBase64String(tmp.SerializeProto()));
>
>
> after which I removed the reference to SubOrder and attempted to
> deserialize the base64 string back to Container - to my surprise this
> worked!
>
> I understand the type information is not saved but there must be a set of
> circumstances under which this would not work - that is, if you start
> adding new fields to Order and then attempt deserialization? or perhaps
> something else?
>
>
>
>
>
>
>  --
> 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?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
Regards,

Marc

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to