What steps will reproduce the problem?
Test program as follows:
[ProtoContract(AsReferenceDefault = true)]
[ProtoInclude(10, typeof(Derived))]
public class Base
{
[ProtoMember(1)]
public Derived DerivedInstance;
}
[ProtoContract(AsReferenceDefault = true)]
public class Derived : Base
{
}
class Program
{
static void Main(string[] args)
{
var schema = RuntimeTypeModel.Default.GetSchema(typeof(Derived));
Console.Out.WriteLine(schema);
}
}
What is the expected output? What do you see instead?
I expect that the DerivedInstance field will be serialized by reference, but it
is not. Program output is:
message Base {
optional Base DerivedInstance = 1;
// the following represent sub-types; at most 1 should have a value
optional Derived Derived = 10;
}
message Derived {
}
Interestingly, if you ask for the schema for typeof(Base) rather than
typeof(Derived) it is correct.
What version of the product are you using? On what operating system?
Version r668, VS2012, Windows 7 x64
- John Hall <john@xjtag.com>
Original issue reported on code.google.com by j...@jdh28.co.uk on 14 Mar 2014 at 4:06
Original issue reported on code.google.com by
j...@jdh28.co.uk
on 14 Mar 2014 at 4:06