WCF序列化具体应用技巧分享

开发 开发工具
WCF序列化在实际应用中是一个比较重要的操作技巧。我们在进行序列化额度时候,需要对其指明一些特定属性,在这里将会做一个详细介绍。

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

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

  1. [DataContract]  
  2. public class RptValue<T> { }  
  3. [DataContract]  
  4. public class RptSingleValue<T> : RptValue<T> 
  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<T> : RptValue<T> 
  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<string,object> _datas=new Dictionary<string,object>();  
  39. [DataMember]  
  40. public Dictionary<string,object> Data  
  41. {  
  42. get { return _datas; }  
  43. set { _datas = value; }  
  44. }  
  45. public void AddSingleValue<T>(string name,T value){  
  46. if (!this._datas.ContainsKey(name))  
  47. {  
  48. RptSingleValue<T> rs = new RptSingleValue<T>();  
  49. rs.Value = value;  
  50. this._datas.Add(name, rs);  
  51. }  
  52. }  
  53. public void AddFromToValue<T>(string name,T fromValue,T toValue)  
  54. {  
  55. if (!this._datas.ContainsKey(name))  
  56. {  
  57. RptFromToValue<T> rft = new RptFromToValue<T>();  
  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在实际应用中特点分析
责任编辑:曹凯 来源: 博客园
相关推荐

2010-02-24 17:07:26

WCF序列化引擎

2010-02-24 17:41:05

WCF集合反序列化

2010-02-25 15:25:19

WCF通道

2009-12-09 09:38:15

PHP序列化数组

2009-11-09 15:06:34

WCF序列化

2009-11-05 16:34:37

WCF序列化

2010-03-01 13:06:49

WCF继承

2009-12-22 14:31:27

WCF序列化依赖属性

2010-02-22 16:00:22

WCF序列化

2009-12-21 16:52:02

WCF序列化

2010-02-22 15:20:54

WCF WS-Disc

2010-02-22 17:21:02

WCF消息交换

2009-11-05 14:25:36

WCF Data Co

2010-02-26 10:46:12

WCF行为扩展

2010-03-02 10:50:57

WCF元数据交换

2010-03-01 15:40:04

WCF实例停用

2010-02-25 18:04:02

WCF IIS宿主

2010-03-01 09:48:23

WCF会话服务

2010-02-25 10:52:29

WCF响应服务

2022-08-06 08:41:18

序列化反序列化Hessian
点赞
收藏

51CTO技术栈公众号