使用 NetDataContractSerializer 共享类型

在上一章节《WCF可序列化方式》 提到了NetDataContractSerializer 适用于客户端与服务端共享类型信息,支持支持类型不变性。 但并没有提供现成的特性,所以无法使用对数据契约进行标记的方式来达到使用NetDataContractSerializer的目的,必须通过自定制开发,才能对操作契约进行标注。

1. NetDataContractFormatAttribute特性;

    public class NetDataContractFormatAttribute : Attribute, IOperationBehavior{public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters){}public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation){ReplaceDataContractSerializerOperationBehavior(operationDescription);}public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation){ReplaceDataContractSerializerOperationBehavior(operationDescription);}public void Validate(OperationDescription operationDescription){}public static void ReplaceDataContractSerializerOperationBehavior(OperationDescription description){DataContractSerializerOperationBehavior dcs = description.Behaviors.Find<DataContractSerializerOperationBehavior>();if (dcs != null){description.Behaviors.Remove(dcs);}description.Behaviors.Add(new NetDataContractSerializerOperationBehavior(description));}}

2. NetDataContractSerializerOperationBehavior 行为;

    public class NetDataContractSerializerOperationBehavior : DataContractSerializerOperationBehavior{private static NetDataContractSerializer serializer = new NetDataContractSerializer();public NetDataContractSerializerOperationBehavior(OperationDescription operationDescription): base(operationDescription){}public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IList<Type> knownTypes){return NetDataContractSerializerOperationBehavior.serializer;}public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList<Type> knownTypes){return NetDataContractSerializerOperationBehavior.serializer;}}

3. 将特性标记在契约中;

    [ServiceContract(CallbackContract = typeof(IStockServiceCallback))]public interface IStockService{        [OperationContract]double GetPrice(string ticker);[OperationContract(IsOneWay = true)]void RegisterForUpdate(string ticker);[OperationContract][NetDataContractFormat]StockPrice GetStockPrice(string ticker);}

转载于:https://www.cnblogs.com/jerryshi/archive/2011/10/23/2221679.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度丨一文读懂智能制造的主线——智能生产(工厂/车间数字化)

来源&#xff1a; 亿欧摘要&#xff1a; 发展智能制造对于中国制造业乃至中国经济的重要性不言而喻&#xff0c;先进制造业作为深耕制造业领域的专业媒体&#xff0c;长期关注智能制造发展&#xff0c;助力中国制造转型升级&#xff0c;努力做“中国制造2025”的推动者。近年来…

最好用的十六进制编辑器 010 Editor

最好用的十六进制编辑器010 Editor https://blog.csdn.net/qq_38482805/article/details/89309120 新版010Edit注册机&去除网络验证&#xff1a;https://bbs.pediy.com/thread-249724.htm 010Editor脚本语法入门&#xff1a;https://www.jianshu.com/p/ba60ebd8f916 宇宙…

Object to XML

摘要&#xff1a;本节主要介绍如何把Object对象转换为XML 引言&#xff1a;最近工作中因为工作需要&#xff0c;需要把两个系统之间的传递的报文修改一下&#xff08;现在系统之间一般都是通过发送xml字符串传数据吧&#xff09;&#xff0c;最开始用的Jdom来实现的&#xff0c…

Science:发现重写创伤记忆的神经元

来源&#xff1a;生物谷摘要&#xff1a;对创伤经历的回忆会导致精神健康问题&#xff0c;如创伤后应激障碍&#xff08;PTSD&#xff09;&#xff0c;这会破坏一个人的生活。对创伤经历的回忆会导致精神健康问题&#xff0c;如创伤后应激障碍&#xff08;PTSD&#xff09;&…

安卓逆向_23 --- Hook 框架 Cydia Substrate( Hook Java层 和 so层)

From&#xff1a;Android Hook 框架 Cydia_substrate 详解&#xff1a;https://www.cnblogs.com/lkislam/p/4859957.html 通过 cydia substrate 对 framework API进行注入&#xff1a;https://www.jianshu.com/p/cc49b30c5b5b Android 逆向之旅 --- Native层的Hook神器Cydia …

数据结构C语言实现—队列操作

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef int elemType; 5 /************************************************************************/ 6 /* 以下是关于队列链接存储操作的6种算法 */ 7 /********************************************…

高校人工智能热的“冷”思考

来源&#xff1a;中国科学报高校在开设相关专业时&#xff0c;应该组织教授委员会、学术委员会&#xff0c;结合国家的人才政策、产业发展对人才的需求、国内外其他高校同类专业人才培养的情况&#xff0c;就本校开设这方面的专业有无现实条件&#xff0c;怎样进行师资建设、课…

转载:实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包

转载&#xff1a;实用FRIDA进阶&#xff1a;内存漫游、hook anywhere、抓包&#xff1a;https://www.anquanke.com/post/id/197657 Frida Hook Android 常用方法&#xff1a;https://blog.csdn.net/zhy025907/article/details/89512096 实用FRIDA进阶&#xff1a;脱壳、自动化…

谷歌李飞飞:我们依旧站在人工智能研究的起点

来源&#xff1a;机器人大讲堂摘要&#xff1a;8 年来&#xff0c;在 ImageNet 数据集的训练下&#xff0c;人工智能对于图像识别的准确度整整提高了 10 倍&#xff0c;甚至超越了人类视觉本身。但李飞飞认为&#xff0c;我们对于人工智能的研究仍在起点上。说起人工智能&#…

Android Intent 用法总结

From&#xff1a;https://www.jianshu.com/p/67d99a82509b Android 中提供了 Intent 机制来协助应用间的交互与通讯&#xff0c;Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述&#xff0c;Android 则根据此 Intent 的描述&#xff0c;负责找到对应的组件…

teamlab与redmine试用对比报告

系统介绍 l TeamLab 是一个免费开源的商业协作和项目管理的平台。TeamLab 主要功能包括&#xff1a;项目管理、里程碑管理、任务、报表、事件、博客、论坛、书签、Wiki、即时消息等等。 l Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及…

FRIDA - API使用篇:rpc、Process、Module、Memory 使用方法及示例

官方 API (JavaScript API)&#xff1a;https://frida.re/docs/javascript-api/ From&#xff1a; ( FRIDA-API使用篇 )&#xff1a;https://www.anquanke.com/post/id/195215 前言 在这篇文章中来对其官方的一些非常常用的 API 进行学习。所谓工欲善其事&#xff0c;必先利其…

Entity Framework 实体关系总结(转)

通过 Entiy Framework实践系列文章&#xff0c;理了理 Entity Framework 的实体关系。 为什么要写文章来理清这些关系&#xff1f;“血”的教训啊&#xff0c;刚开始使用 Entity Framework 的时候&#xff0c;由于没有静下心来认真理清关系&#xff0c;走了一些"痛不欲生&…

技术架构分析:攻克Dota2的OpenAI-Five

来源&#xff1a;CreateAMind摘要&#xff1a;OpenAI昨日发布研究成果&#xff0c;宣布Dota2 5v5在限定条件下&#xff08;英雄阵容固定&#xff0c;部分道具和功能禁用&#xff09;战胜人类半职业选手。本文主要对其模型技术架构做一些分析总结。一、 模型输入与输出模型的输入…

Redis基础-Redis概念及常见命令

1.nosql数据库 NoSQL数据库是一种提供了非关系型数据存储的数据库系统&#xff0c;与传统的关系型数据库&#xff08;如SQL数据库&#xff09;不同。NoSQL数据库的特点是灵活性高&#xff0c;能够处理结构化、半结构化或非结构化数据。它们通常用于大数据和实时Web应用。NoSQL数…

Java 高级特性 --- 反射

From&#xff1a;Java 高级特性 --- 反射&#xff1a;https://www.jianshu.com/p/9be58ee20dee From&#xff1a;Java 基础之 --- 反射&#xff08;非常重要&#xff09;&#xff1a;https://blog.csdn.net/sinat_38259539/article/details/71799078 From&#xff1a;Java 高级…

G20国家科技竞争力大盘点,中国科研创新表现突出,人工智能变道超车

来源&#xff1a;科睿唯安中国科学院文献情报中心和科睿唯安6月25日在北京联合发布了《G20国家科技竞争格局之辩》系列报告&#xff0c;报告分为总体篇及人工智能专题篇&#xff08;下文有重点介绍&#xff09;&#xff0c;聚焦G20国家的科研产出规模、学术影响力、领域分布、国…

为什么要用非关系数据库?

随着互联网web2.0网站的兴起&#xff0c;非关系型的数据库现在成了一个极其热门的新领域&#xff0c;非关系数据库产品的发展非常迅速。而传统的关系数据库在应付 web2.0网站&#xff0c;特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心&#xff0c;暴露了…

Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class

From&#xff1a;Java中泛型 Class<T>、T 与 Class<?>、 Object类 和 Class类、 object.getClass() 和 Object.class &#xff1a;https://www.cnblogs.com/zhaoyanhaoBlog/p/9362267.html Class<T>和 Class<?>类型 有什么区别&#xff1a;https://…

智能驾驶是否会“运动式”发展

来源&#xff1a;中国科学网最近&#xff0c;无人驾驶车发生撞人致死事故再度引发公众恐慌。在近日举行的全球人工智能技术大会上&#xff0c;中国工程院院士李德毅表示&#xff0c;不管是无人驾驶还是有人驾驶&#xff0c;事故总是有的。实际上人类才是第一马路杀手&#xff0…