摘要:通過類庫提供的和分別執(zhí)行序列化和反序列化,而不用依賴任何生成的代碼。只針對(duì)平臺(tái)的話,不需要文件就可以應(yīng)用序列化協(xié)議。
前一篇文章我們看到使用Google.Protobuf有諸多不便(參考《如何在C#中使用Google.Protobuf工具》),這次我們來看看另一個(gè)工具的使用體驗(yàn)。
在類級(jí)別增加注解[ProtoContract],在字段級(jí)別增加注解[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; } }
當(dāng)安裝了protobuf-net.BuildTools工具后,還可以在開發(fā)時(shí)對(duì)目標(biāo)類型(添加了[ProtoContract]注解)的定義進(jìn)行檢查,比如字段順序重復(fù)、使用的字段類型不符合protobuf要求等。比如因疏忽設(shè)置了重復(fù)的字段順序,提示效果如下:
?
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); } }
?
?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125111.html
摘要:在反序列化字符串為對(duì)象時(shí),拋出如下異常。即在文檔中有一個(gè)錯(cuò)誤缺少根元素。首先看下代碼拋出異常是在這里出現(xiàn)的。問題在于這里,原因是進(jìn)行了寫入操作,最后流的位置停留在尾部。因此,在反序列化之前將流的位置定位到開始的位置即可。 Q: 在反序列化 Xml 字符串為 Xml 對(duì)象時(shí),拋出如下異常。showImg(https://segmentfault.com/img/bVHTdx?w=576&...
摘要:系列公用委托都用于委托帶有返回值的的方法,所有都是最后一個(gè)參數(shù)代表返回值類型。的字面對(duì)象據(jù)稱也是哈希實(shí)現(xiàn)。 Java 丟了好多年,最近在揀起來,首先當(dāng)然是了解這么多年來它的變化,于是發(fā)現(xiàn)了 Java 8 的java.util.stream。在學(xué)習(xí)和試驗(yàn)的過程中,相比較于 C# 和 javascript,有那么些心得,作文以記之。 早些時(shí)間寫過一篇《ES6 的 for..of 和 Ge...
摘要:系列公用委托都用于委托帶有返回值的的方法,所有都是最后一個(gè)參數(shù)代表返回值類型。的字面對(duì)象據(jù)稱也是哈希實(shí)現(xiàn)。 Java 丟了好多年,最近在揀起來,首先當(dāng)然是了解這么多年來它的變化,于是發(fā)現(xiàn)了 Java 8 的java.util.stream。在學(xué)習(xí)和試驗(yàn)的過程中,相比較于 C# 和 javascript,有那么些心得,作文以記之。 早些時(shí)間寫過一篇《ES6 的 for..of 和 Ge...
閱讀 3859·2023-01-11 11:02
閱讀 4350·2023-01-11 11:02
閱讀 3183·2023-01-11 11:02
閱讀 5283·2023-01-11 11:02
閱讀 4838·2023-01-11 11:02
閱讀 5648·2023-01-11 11:02
閱讀 5438·2023-01-11 11:02
閱讀 4162·2023-01-11 11:02