.net 如何使用RuntimeTypeModel将ProtoInclude与protobuf net中的类型关联?

.net 如何使用RuntimeTypeModel将ProtoInclude与protobuf net中的类型关联?,.net,protobuf-net,.net,Protobuf Net,据我所知,RuntimeTypeModel允许将ProtoInclude与类型关联,这对于无法更改类型声明的情况非常有用。但我发现很难理解它实际上是如何做到的 有没有一个例子 谢谢。AddSubType()用于指定派生类型及其标识符;例如(): 以上内容在运行时配置了整个类型模型,但您也可以在自动(通过属性)和显式(通过代码)之间混合匹配。+1@Marc gravel:那么我们应该使用model.Serialize和model.Deserialize,而不是ProtoBuf.Serializer

据我所知,RuntimeTypeModel允许将ProtoInclude与类型关联,这对于无法更改类型声明的情况非常有用。但我发现很难理解它实际上是如何做到的

有没有一个例子

谢谢。

AddSubType()
用于指定派生类型及其标识符;例如():


以上内容在运行时配置了整个类型模型,但您也可以在自动(通过属性)和显式(通过代码)之间混合匹配。

+1@Marc gravel:那么我们应该使用model.Serialize和model.Deserialize,而不是ProtoBuf.Serializer.De/Serialize?另外,在你的例子中,另一个派生词是否来自某个基?@sgtz肯定是的,是的来自记忆。按这个顺序。
    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;
    }