WCF序列化具体应用技巧分享
创始人
2024-06-23 09:50:18
0

WCF已经出现就为广大开发人员所青睐。它独特的功能能够帮助我们打造一个安全性极强,可跨平台的开发解决方案。在这里我们就为大家详细介绍一下其中一个比较重要的知识,WCF序列化的相关应用。

最近想做一个项目,考虑到需要根据用户有可能会提供不同类型的数据所以用到了泛型来实现其功能:通过RptParameters的不同方法,加入不同类型的值,并且保存在Dictionary中,由于Dictionary中的第二个参数只能以object来包含不同类型的值,这就需在WCF序列化在进行的时候为其指明KnowTyp属性,由于属性标示要求是具体的类型,而类型只能在用户使用时才能确定,这就出现了矛盾。全部代码如下,问题出在下面代码红色部分,不能正常标示泛型属性。

  1. [DataContract]  
  2. public class RptValue { }  
  3. [DataContract]  
  4. public class RptSingleValue : RptValue 
  5. {  
  6. private T _value;  
  7. [DataMember]  
  8. public T Value  
  9. {  
  10. get { return _value; }  
  11. set { _value = value; }  
  12. }  
  13. }  
  14. [DataContract]  
  15. public class RptFromToValue : RptValue 
  16. {  
  17.  private T _fvalue;  
  18. [DataMember]  
  19. public T FromValue  
  20. {  
  21. get { return _fvalue; }  
  22. set { _fvalue = value; }  
  23. }  
  24. private T _tvalue;  
  25. [DataMember]  
  26. public T ToValue  
  27. {  
  28. get { return _tvalue; }  
  29. set { _tvalue = value; }  
  30. }  
  31. }  
  32. //[KnownType(typeof(RptSingleValue))]  
  33. //[KnownType(typeof(RptFromToValue))]  
  34. //[KnownType(typeof(RptValue))]  
  35. [DataContract]  
  36. public class RptParameters  
  37. {  
  38. private Dictionary _datas=new Dictionary();  
  39. [DataMember]  
  40. public Dictionary Data  
  41. {  
  42. get { return _datas; }  
  43. set { _datas = value; }  
  44. }  
  45. public void AddSingleValue(string name,T value){  
  46. if (!this._datas.ContainsKey(name))  
  47. {  
  48. RptSingleValue rs = new RptSingleValue();  
  49. rs.Value = value;  
  50. this._datas.Add(name, rs);  
  51. }  
  52. }  
  53. public void AddFromToValue(string name,T fromValue,T toValue)  
  54. {  
  55. if (!this._datas.ContainsKey(name))  
  56. {  
  57. RptFromToValue rft = new RptFromToValue();  
  58. rft.FromValue = fromValue;  
  59. rft.ToValue = toValue;  
  60. this._datas.Add(name,rft);  
  61. }  
  62. }  

上面代码中红色字体部分,是需要完善的地方,如果去掉注释会出现如下图的错误传到不能编译通过,如果不加上,WCF序列化则不能通过。

【编辑推荐】

  1. WCF跟踪调试具体代码详细剖析
  2. WCF可信赖会话正确使用方法介绍
  3. WCF Streaming流处理相关特点以及应用技巧讲解
  4. WCF Address正确含义解析
  5. WCF 3.5在实际应用中特点分析

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...