摘要:通過類庫提供的和分別執行序列化和反序列化,而不用依賴任何生成的代碼。只針對平臺的話,不需要文件就可以應用序列化協議。
前一篇文章我們看到使用Google.Protobuf有諸多不便(參考《如何在C#中使用Google.Protobuf工具》),這次我們來看看另一個工具的使用體驗。
在類級別增加注解[ProtoContract],在字段級別增加注解[ProtoMember(orderxxx)]
[ProtoContract] public class ErrorLog { [ProtoMember(1)] public string LogID { get; set; } [ProtoMember(2)] public string Context { get; set; } [ProtoMember(3)] public string Stack { get; set; } }
當安裝了protobuf-net.BuildTools工具后,還可以在開發時對目標類型(添加了[ProtoContract]注解)的定義進行檢查,比如字段順序重復、使用的字段類型不符合protobuf要求等。比如因疏忽設置了重復的字段順序,提示效果如下:
?
public static byte[] Serialize(ErrorLog log) { using (MemoryStream memoryStream = new MemoryStream()) { ProtoBuf.Serializer.Serialize(memoryStream, log); return memoryStream.ToArray(); } }
?
public static ErrorLog DeSerialize(byte[] data) { using (MemoryStream ms = new MemoryStream(data)) { return ProtoBuf.Serializer.Deserialize(ms); } }
?
?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/125111.html
摘要:在反序列化字符串為對象時,拋出如下異常。即在文檔中有一個錯誤缺少根元素。首先看下代碼拋出異常是在這里出現的。問題在于這里,原因是進行了寫入操作,最后流的位置停留在尾部。因此,在反序列化之前將流的位置定位到開始的位置即可。 Q: 在反序列化 Xml 字符串為 Xml 對象時,拋出如下異常。showImg(https://segmentfault.com/img/bVHTdx?w=576&...
摘要:系列公用委托都用于委托帶有返回值的的方法,所有都是最后一個參數代表返回值類型。的字面對象據稱也是哈希實現。 Java 丟了好多年,最近在揀起來,首先當然是了解這么多年來它的變化,于是發現了 Java 8 的java.util.stream。在學習和試驗的過程中,相比較于 C# 和 javascript,有那么些心得,作文以記之。 早些時間寫過一篇《ES6 的 for..of 和 Ge...
摘要:系列公用委托都用于委托帶有返回值的的方法,所有都是最后一個參數代表返回值類型。的字面對象據稱也是哈希實現。 Java 丟了好多年,最近在揀起來,首先當然是了解這么多年來它的變化,于是發現了 Java 8 的java.util.stream。在學習和試驗的過程中,相比較于 C# 和 javascript,有那么些心得,作文以記之。 早些時間寫過一篇《ES6 的 for..of 和 Ge...
閱讀 3735·2023-01-11 11:02
閱讀 4244·2023-01-11 11:02
閱讀 3050·2023-01-11 11:02
閱讀 5180·2023-01-11 11:02
閱讀 4737·2023-01-11 11:02
閱讀 5534·2023-01-11 11:02
閱讀 5313·2023-01-11 11:02
閱讀 3990·2023-01-11 11:02