2011-05-10 18 views

回答

5

是;這裏有各種選擇;

  • 首先,請注意,如果添加成員,「隱式字段」會變得很脆弱,因爲它必須進行比我想要的更多的猜測;只使用有穩定合同
  • 您可以通過GlobalSettings應用默認行爲全球,但我傾向於反對這樣
  • protobuf網V1還可以一起工作:
    • XmlType將/ XmlElement的屬性對,只要XmlElement指定一個訂單
    • DataContract/DataMember屬性對,只要DataMember指定一個訂單
    • 部分類;即使對於性能,經由ProtoPartialMember屬性(一個或多個)等
  • protobuf網V2可以使用100%沒有任何形式的屬性,通過使用TypeModel在運行時描述有趣類型;這也可以將模型編譯爲專用序列化dll(如果需要的話)(尤其是與AOT相關的設備一起使用)

我可以提供更多建議,但有多種選擇;告訴我哪些是最合適的,我可以添加更多細節。

Re .proto文件;這些是(並且一直)完全可選與protobuf網,因爲我認識到,有很多情況下,代碼優先的方法(或序列化改造現有模型)是有用的。三一個代碼生成器,如果你選擇使用.proto,當然。

+0

嗨,我沒有使用.proto文件,DataContracts和我已經刪除了「隱式字段」我已經從你的倉庫下載了V2,我無法序列化LLBLGen Pro生成的任何實體。這裏是我使用的代碼: – khorvat 2011-05-11 13:49:33

+0

'ProtoBuf.Meta.RuntimeTypeModel.Default.Add(typeof(DAL.EntityClasses.RequestExaminationEntity),true); ProtoBuf.Serializer.PrepareSerializer (); ProtoBuf.Serializer.Serialize(m,DataSource [0]); byte [] arrProto = m.ToArray(); (新的MemoryStream(arrProto));' – khorvat 2011-05-11 13:50:03

+0

我得到序列化後長度爲零的字節[]。並感謝您的快速回復:) – khorvat 2011-05-11 13:51:26