WCF - DataContractSerializer
发布日期:2021-06-29 03:54:09
浏览次数:2
分类:技术文章
本文共 1694 字,大约阅读时间需要 5 分钟。
WCF 缺省情况下使用 DataContractSerializer 序列化引擎,多数时候我们并不关心它怎么运作,不过有些小技巧还是有必要知道的。
1. DataContractSerializer 同样支持 Serializable。 [Serializable] public class Data { public int X; } DataContractSerializer serializer = new DataContractSerializer(typeof(Data)); using (MemoryStream stream = new MemoryStream()) { serializer.WriteObject(stream, new Data()); stream.Seek(0, SeekOrigin.Begin); Data d2 = (Data)serializer.ReadObject(stream); }
2. 使用 DataContractSerializer event。 [DataContract] public class Data { [DataMember] public int X; [OnSerializing] void OnSerializing(StreamingContext context) { Console.WriteLine("OnSerializing"); } [OnSerialized] void OnSerialized(StreamingContext context) { Console.WriteLine("OnSerialized"); } [OnDeserializing] void OnDeserializing(StreamingContext context) { Console.WriteLine("OnDeserializing"); } [OnDeserialized] void OnDeserialized(StreamingContext context) { Console.WriteLine("OnDeserialized"); } }
这个能用来干什么?比如做些初始化,或者补全操作…… 这些事件是由 DataContractSerializer 触发的,因此不管是 [DataContract] 还是 [Serializable] 都可以。3. IFormatter?我 们比较熟悉的序列化引擎是 BinaryFormatter 和 SoapFormatter,它们都实现了 IFormatter,可 WCF 的这个 DataContractSerializer 却不曾实现这个接口。好像某些时候会有那么些不便…… 没关系,还有另外一个家伙 —— NetDataContractSerializer。NetDataContractSerializer 实现了 IFormatter,其序列化的结果可以用 DataContractSerializer 反序列化(反过来好像不行…… )。 NetDataContractSerializer serializer = new NetDataContractSerializer(); DataContractSerializer deserializer = new DataContractSerializer(typeof(Data)); Data d = new Data(); d.X = 1234; using (MemoryStream stream = new MemoryStream()) { serializer.WriteObject(stream, d); stream.Seek(0, SeekOrigin.Begin); Data d2 = (Data)deserializer.ReadObject(stream); Console.WriteLine(d2.X); }
转载地址:https://blog.csdn.net/zengjibing/article/details/3812305 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月28日 12时33分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
怎么查看本机S/N序列号和BIOS版本
2019-04-29
ThinkPad X1 Carbon安装win7.
2019-04-29
EasyOrtho卫星影像处理软件
2019-04-29
TerraMaster RAID Manager
2019-04-29
vmware vcenter converter(物理机转换虚拟机)
2019-04-29
解决Surface 网卡不识别
2019-04-29
回收站东西太多删不掉
2019-04-29
超融合与云计算的区别是什么?
2019-04-29
SuperSocket
2019-04-29
修改ant design的tooltip组件中的字体颜色(2分钟解决战斗)
2019-04-29
参观邓小平故居有感
2019-04-29
教你如何查看linux版本
2019-04-29
Linux下利用crontab执行任务
2019-04-29
RedHat Linux下注册Apache为系统服务
2019-04-29
使用LoadRunner监控Apache的步骤
2019-04-29
LoadRunner录制脚本时报加载GrooveUtil.dll出错的解决方法
2019-04-29
用Spotlight实时监控Windows Server 2008
2019-04-29
Tomcat 6.0.32中调整JVM大小及最大线程数
2019-04-29
Mysql数据库下载及安装
2019-04-29
MySql安装时解决要输入current root password的方法
2019-04-29