在WebServices中,TimeSpan不能作为系统的TimeSpan作为参数,在客户端会生成新的TimeSpan类。

一、问题重现

创建一个以TimeSpan为参数的Web Method:

1:  [WebMethod]

2:  public string HelloWorld(TimeSpan span)

3:  {

4:      return "Hello World";

5:  }

6:

查看WSDL文件,可以看到以下的内容:

1:

2: -

3: -

4:

5:

6:

7:

8:

客户端引用Web Services会生成新的TimeSpan类:   1: public partial class TimeSpan : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {

2:

3:     [System.NonSerializedAttribute()]

4:     private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

5:

6:     [global::System.ComponentModel.BrowsableAttribute(false)]

7:     public System.Runtime.Serialization.ExtensionDataObject ExtensionData {

8:         get {

9:             return this.extensionDataField;

10:         }

11:         set {

12:             this.extensionDataField = value;

13:         }

14:     }

15:

16:     public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

17:

18:     protected void RaisePropertyChanged(string propertyName) {

19:         System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

20:         if ((propertyChanged != null)) {

21:             propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

22:         }

23:     }

24: }

方法只能使用上面生成的TimeSpan:

二、解决方法

扩展TimeSpan:

1: public class TimeSpanEx

2: {

3:     [XmlElement(ElementName = "TimeSpan")]

4:     public string TimeSpanAsString

5:     {

6:         get { return TimeSpan != null ? TimeSpan.ToString() : null; }

7:         set

8:         {

9:             TimeSpan span;

10:             if (value != null && TimeSpan.TryParse(value, out span))

11:                 TimeSpan = span;

12:             else

13:                 TimeSpan = new TimeSpan();

14:         }

15:     }

16:     [XmlIgnore]

17:     public TimeSpan TimeSpan { get; set; }

18: }

通过TimeSpan传递TimeSpan:

1:  [WebMethod]

2:  public string HelloWorld(TimeSpanEx span)

3:  {

4:      return "Hello World";

5:  }

6:

客户端使用示例:

1:  WebService1SoapClient client = new WebService1SoapClient();

2:  TimeSpanEx span = new TimeSpanEx();

3:  span.TimeSpan = new TimeSpan(1, 2, 3).ToString();

4:  client.HelloWorld(span);

5:

服务端获取的TimeSpan结果:

mysql timespan_.NET对象序列化—TimeSpan相关推荐

  1. java对象序列化并存储到文件和数据库

    Java中要实现将对象保存起来持久化,需要让对象实现Serializable接口,这样就能将java对象用二进制流保存并恢复.下面我将以保存到文件和保存到mysql来进行解析.先给出序列化类的定义: ...

  2. 基于Golang的对象序列化的程序包开发——myJsonMarshal

    基于Golang的对象序列化的程序包开发--myJsonMarshal[阅读时间:约10分钟] 一.对象序列化概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体程序设计及 ...

  3. Java学习总结:51(对象序列化)

    对象序列化 对象序列化的本质实际上就是将内存中所保存的对象数据转换为二进制数据流进行传输的操作. 但并不是所有类的对象都可以直接进行序列化操作,要被序列化的对象所在的类一定要实现java.io.Ser ...

  4. java培训教程分享:Java中怎样将数据对象序列化和反序列化?

    本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...

  5. 简单介绍实体类或对象序列化时,忽略为空属性的操作

    这篇文章主要介绍了实体类或对象序列化时,忽略为空属性的操作,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 第一种,在配置文件配置 在application.xml直接 ...

  6. Java对象序列化详解6,Java对象的序列化与反序列化详解

    把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种途径: Ⅰ . 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中 Ⅱ.  在网 ...

  7. 对象序列化与反序列化

    目录 序列化 反序列化 ObjectOutputStream ObjectInputStream 序列化 一个类必须实现了Serializable 接口,其对象才能序列化,Serializable接口 ...

  8. .NET 中的对象序列化 (转载)

    .NET 中的对象序列化 Piet Obermeyer Microsoft Corporation 2001 年 8 月 摘要:为什么要使用序列化?最重要的两个原因是:将对象的状态保存在存储媒体中以便 ...

  9. java 对象怎么序列化,java对象序列化总结

    java对象序列化小结 百度百科上介绍序列化是这样的: 序列化 (Serialization): 将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储 ...

最新文章

  1. Linux系统/boot目录破损无法启动怎么办
  2. 网络规划设计师考试命题模式持续在变   你变不变
  3. android sdk启动不了,windows server 2008下android sdk不能正常启动
  4. Codeforces Round #501 (Div. 3)【未完结】
  5. 大型企业网络配置系列课程详解(第一版)发布
  6. docker 根据标签删除镜像_10 个 Docker 镜像安全最佳实践
  7. Hibernate和UUID标识符
  8. IDEA初次使用Tomcat运行项目(如何添加加载项目到Tomcat)
  9. 高性能Web框架FastAPI v0.62.0
  10. 新浪的wap网站,发现原来我们的head存在着这样的差异
  11. LVGL笔记11--lv_btn按钮
  12. 源码剖析Redis中如何使用跳表的
  13. 诱人却非万能,理性看待Serverless的落地
  14. 武汉计算机学校分数线,武汉交通学校2021年招生录取分数线
  15. IDG刘雨坤:关于SaaS业务七点经验
  16. 分享52个Java源码,总有一款适合您
  17. Android动态壁纸解析
  18. 一直想学的Synchronized,原来是这样的底层原理
  19. 谨此献给1980-1985年出生的人
  20. SQL Server实现某书店图书进货、销售管理系统

热门文章

  1. java 正则 小数_java用正则表达式判断是否是小数的方法
  2. 【Java版高级数据结构】树论基础二叉树
  3. 前端转安卓开发!作为一名程序员我不忘初心,进阶学习资料!
  4. Python理论模拟题
  5. CSS固定定位与粘性定位4大企业级案例
  6. Android 应用(2)——全志T507安全策略
  7. php 中 t怎么打开,PHP中的流
  8. c/c++参考手册与手册查阅(apiref.com/Microsoft doc/cppReference/cplusplus)
  9. 六一新玩法!AI涂鸦秒变精美艺术画
  10. 关于超链接target 属性