As I understood, RuntimeTypeModel allows to associate ProtoInclude with a type, which is useful for cases when the type declaration cannot be changed. But I find it hard to unde
AddSubType()
is used to specify derived types, along with their identifier; for example (full code):
static RuntimeTypeModel CreateModel() {
var model = TypeModel.Create();
model[typeof(NotInvolved)].Add(1, "D");
model[typeof(SomeBase)]
.Add(1, "A")
.AddSubType(2, typeof(SomeDerived))
.AddSubType(3, typeof(AnotherDerived));
model[typeof(SomeDerived)].Add(1, "B");
model[typeof(AnotherDerived)].Add(1, "C");
model[typeof(AlsoNotInvolved)].Add(1, "E");
return model;
}
The above configures the entire type model at runtime, but you can also mix-and-match between automatic (via properties) and explicit (through code).