What steps will reproduce the problem?
1. Comple and run following code
private static void Main(string[] args)
{
var c = new C1()
{
c1 = new C2()
{
i = "iiii",
},
c2 = new C3()
{
i = "iiii",
j = "jjjj",
}
};
var ms = new MemoryStream();
Serializer.Serialize(ms, c);
ms.Seek(0, SeekOrigin.Begin);
var o = Serializer.Deserialize<C1>(ms);
ms.Seek(0, SeekOrigin.Begin);
var str = new StreamReader(ms).ReadToEnd();
Console.WriteLine(c.c2.i);
Console.WriteLine(o.c2.i);
}
[ProtoContract]
public class C1
{
[ProtoMember(1, DynamicType = false)] public C2 c1;
[ProtoMember(2, DynamicType = false)] public C3 c2;
}
[ProtoContract]
public class C2
{
[ProtoMember(1)] public string i;
}
[ProtoContract]
public class C3 : C2
{
[ProtoMember(2)] public string j;
}
What is the expected output? What do you see instead?
expected: iiii\niiii got iiii\n
What version of the product are you using? On what operating system?
2.0.0.580
Please provide any additional information below.
It don't pack supertype fields, even if dynamic types are off (DynamicType =
false)
If endable Dynamic types -- icreates or C2 or C# but still with same bug.
If i add ProtoInclude, than it serializes normally:
[ProtoContract]
[ProtoInclude(2,typeof(C3))]
public class C2
{
[ProtoMember(1)] public string i;
}
P.S. Attachig compilable file
Original issue reported on code.google.com by mart.bog...@gmail.com on 24 Aug 2012 at 3:49
Original issue reported on code.google.com by
mart.bog...@gmail.com
on 24 Aug 2012 at 3:49Attachments: