0

ASP.Netv3.5で顧客向けのWebサービスを作成しています。現在、Webサービスメソッドの1つによって返される次のようなオブジェクトがあります。

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

今、顧客は私に次のリクエストを送信しました:

スキーマには、xsd:dateTimeの単一のエントリがあります。これを日付用と時間用の2つのフィールドに分割できますか。xsd:dateとxsd:timeの使用は、オブジェクトタイプとしては問題ないはずです。

明らかに、次のようにクラスを変更できます。

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

しかし、実際には「xsd:DateTime」の2つのフィールドが生成され、彼が要​​求しているようにそれぞれ1つは生成されないと思います。

顧客が期待する結果をどのように達成するかアドバイスしていただけますか?

4

2 に答える 2

1

.NETにはTimeオブジェクトはなく、これはDateTimeオブジェクトの一部です。

strings代わりに2つのオブジェクトを持ち続けます

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 に答える