Please include an e-mail address if this might need a dialogue!
==============
This is possibly related to the AsReference Inheritence known bug, although it
only affects compiled type models so possibly not the same.
I've included a sample project which is as close to the way I've been using
protobuf-net as possible without including the whole project I'm working on.
It does seem to have an unusual way of defining the buffer but it works for me
(most of the time!).
==============
What steps will reproduce the problem?
1. Use a class structure with inheritance
2. Use an AsReference field
3. Use a compiled TypeModel
What is the expected output? What do you see instead?
I expect to be able to Serialize without any problem. Instead I see an
InvalidCastException
What version of the product are you using? On what operating system?
Tested on both r480 and r510
==============
Please provide any additional information below.
This issue seems to come from the order in which types list is maintained
differ in the RuntimeTypeModel and the TypeModel.
During BuildAllSerialisers() A NetObjectSerializer is constructed with a Key
value index the RuntimeTypeModel's types list.
During Compile() the list is re-ordered if hasInheritence is true and written
out to the compiled Assembly as the knowntypes property.
The NetObjectSerializer.EmitWrite() writes out the key into the Write Method.
During Serialization the key is retrieved from the WriteMethod and used to look
up the type in the knowntypes list (which was re-ordered after the key was
written) so the key is now wrong. The Serializer try's to cast from the type
being serialized to the type the key tells it that it should be serializing
which fails.
Original issue reported on code.google.com by bub...@yahoo.co.uk on 11 Jul 2012 at 8:51
Original issue reported on code.google.com by
bub...@yahoo.co.uk
on 11 Jul 2012 at 8:51Attachments: