我正在为ASP.Net v3.5中的客户创建一个Web服务。 目前,我们有一个类似于以下内容的对象,它由一个webservice方法返回:
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”字段,而不是他要求的每个字段。
请您告诉我如何实现客户期望的结果?
答案 0 :(得分: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进行测试,例如模拟对您服务的调用。
答案 1 :(得分: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
}
这似乎正是我正在寻找的!