Как можно использовать RuntimeTypeModel, чтобы связать ProtoInclude с типом в protobuf-net? - PullRequest
5 голосов
/ 22 мая 2011

Как я понял, RuntimeTypeModel позволяет связать ProtoInclude с типом, что полезно в тех случаях, когда объявление типа не может быть изменено.Но мне трудно понять, как это на самом деле делается.

Есть ли пример?

Спасибо.

1 Ответ

10 голосов
/ 22 мая 2011

AddSubType() используется для указания производных типов вместе с их идентификатором; например ( полный код ):

    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;
    }

Выше конфигурируется вся модель типа во время выполнения, но вы также можете смешивать и сопоставлять между автоматическим (через свойства) и явным (через код).

...