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