0

我正在为 ASP.Net v3.5 中的客户创建 Web 服务。目前,我们有一个类似于以下内容的对象,该对象由其中一种 Web 服务方法返回:

public class blah
{
 public DateTime datetime;
 public int someData;
}

现在,客户向我发送了以下请求:

在您的架构中,您有一个 xsd:dateTime 条目。你能把它分成两个字段,一个是日期,另一个是时间。使用 xsd:date 和 xsd:time 作为对象类型应该没问题。

显然,我可以按如下方式更改类:

public class blah
{
 public DateTime date;
 public DateTime time;
 public int someData;
}

但我认为这实际上会产生两个“xsd:DateTime”字段,而不是他要求的每个字段。

请您建议我如何实现客户期望的结果?

4

2 回答 2

1

在 .NET 中没有Time对象,这是DateTime对象的一部分。

我会继续拥有两个strings对象

public class blah
{
    public string date;
    public string time;
    public int someData;
}

然后很快将它们解析为 DateTime 对象

DateTime dateOut;
if(DateTime.TryParseExact(
          string.Format("{0} {1}", date, time), 
          "yyyy-MM-dd HH:mm", 
          null, 
          System.Globalization.DateTimeStyles.None, 
          out dateOut)) 
{
   // date is valid
}
else
{
    // send error back saying that DATE or/and Time needs to follow a pattern
}

要使属性呈现特定类型,您可以使用以下方法进行装饰:

public class blah
{
    [XmlElement(DataType = "Date")]
    public string date;
    [XmlElement(DataType = "Time")]
    public string time;
    public int someData;
}

但是有些论坛认为.NET 在这方面存在一些问题……试一试并使用 Fiddler 自己测试它,例如模拟对您的服务的调用。

于 2012-09-07T10:09:52.980 回答
0
public class Blah
{
 [System.Xml.Serialization.XmlElement(Namespace="http://www.w3.org/2001/XMLSchema", DataType="time")]
 public DateTime time;

 [System.Xml.Serialization.XmlElement(Namespace="http://www.w3.org/2001/XMLSchema", DataType="time")]
 public DateTime date;

 public int someData
}

这似乎正是我正在寻找的!

于 2012-09-07T10:19:53.420 回答