Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How RuntimeTypeModel can be used to associate ProtoInclude with a type in protobuf-net?

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 understand how it is actually done.

Is there an example?

Thanks.

like image 784
mark Avatar asked May 22 '11 12:05

mark


1 Answers

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).

like image 68
Marc Gravell Avatar answered Sep 19 '22 03:09

Marc Gravell