2
我想使用偉大的Protobuf-NET序列化模型。我不能使用屬性(對象在編譯時是未知的),所以我構造了一個TypeModel。 我的對象模型由類TestDataObject組成,此類具有屬性ITestDataExtension。抽象基類TestDataExtensionBase實現此接口 和類TestDataExtension(代碼中的myDataObjectExtA)從此基類繼承。Protobuf網創建帶有接口和抽象基類的typemodel
我TypeModel構造是這樣的:
System.IO.MemoryStream tmpMemoryStream = new System.IO.MemoryStream();
RuntimeTypeModel model = TypeModel.Create();
MetaType basetype = model.Add(typeof(TestDataObject), true);
MetaType interfaceType = model.Add(typeof(ITestDataExtension), true);
//MetaType extBaseType = interfaceType.AddSubType(100, typeof(TestDataExtensionBase));
MetaType extType = interfaceType.AddSubType(200, myDataObjectExtA.GetType());
model.Add(typeof(TestDataExtensionBase), true);
model.Add(myDataObjectA.Ext.GetType(), true);
model.CompileInPlace();
model.Serialize(tmpMemoryStream, myDataObjectA);
byte[] tmpDat = tmpMemoryStream.ToArray();
如果我運行的基類的屬性,以下是沒有序列號,和我需要他們被序列化。
在我看來,我應該已經添加亞型的TestDataExtensionBase這樣的:
MetaType extBaseType = interfaceType.AddSubType(100, typeof(TestDataExtensionBase));
MetaType extType = extBaseType.AddSubType(200, myDataObjectExtA.GetType());
但是,這導致:意外的亞型:TestDataExtension。 有沒有人知道我做錯了什麼?任何幫助,將不勝感激。
一如既往的anwser顯然非常簡單,這就像一個魅力。非常感謝您的快速響應。 – pabes 2012-02-21 14:50:14