4
據我所知,RuntimeTypeModel允許將ProtoInclude與一個類型關聯,這對於類型聲明無法更改的情況很有用。但我發現很難理解它是如何實際完成的。如何使用RuntimeTypeModel將ProtoInclude與protobuf-net中的類型關聯?
有沒有例子?
謝謝。
據我所知,RuntimeTypeModel允許將ProtoInclude與一個類型關聯,這對於類型聲明無法更改的情況很有用。但我發現很難理解它是如何實際完成的。如何使用RuntimeTypeModel將ProtoInclude與protobuf-net中的類型關聯?
有沒有例子?
謝謝。
AddSubType()
用於指定派生類型及其標識符;例如(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;
}
配置在運行時,整個型模型,但也可以混合和匹配之間的自動(通過特性)和顯式的(通過代碼)。
+1 @Marc Gravell:那麼我們應該使用model.Serialize和model.Deserialize從那裏而不是ProtoBuf.Serializer.De/serialize?另外,你的例子中AnotherDerived從SomeBase派生嗎? –
sgtz
2011-07-27 15:16:38
@sgtz肯定是的,從內存是。以該順序。 – 2011-07-27 15:45:21