2017-01-24 7 views
0

これはスタックオーバーフローに関する私の最初の質問です。それで、私の側からの何らかの不正行為に対する私の謝罪!TimeSpanにデシリアライズするときにduration要素が必要です

私はいくつかのXMLを逆シリアル化する必要があります。要素の1つとデータ型xs:durationが必要です。オプションの要素のためにこれを行うにはどのように構築するために使用され、http://kennethxu.blogspot.nl/2008/09/xmlserializer-doesn-serialize-timespan.htmlで見つけることができます:

public class ValueWeightTime 
{ 
    private TimeSpan _value = new TimeSpan(); 

    [XmlIgnore] 
    public TimeSpan Value { get { return _value; } set { _value = value; } } 

    [Required] //ToDo: fix default value PT0S 
    [XmlElement(ElementName = "Value", DataType = "duration")] 
    public string XmlValue 
    { 
     get { return XmlConvert.ToString(_value); } 
     set { _value = XmlConvert.ToTimeSpan(value); } 
    } 
} 

必須の属性が動作しません。誰も "値"要素を必要とする方法を知っていますか?

答えて

0

あなたはこのを探していることがあります。

[DataMember(IsRequired = true)] 

問題が解決しない場合は、あなたがこれを行うことができます:

[XmlIgnore] 
public TimeSpan Value 
{ 
    get 
    { 
     if(String.IsNullOrEmpty(XmlValue)) 
      throw new AgrumentException("Value is required."); 
     return _value; 
    } 
    set { _value = value; } 
} 
+0

こんにちはトニー、お返事のためのthnx!残念ながら、それは動作しませんでした。私はまだエラーの代わりにデフォルトのTimeSpans({00:00:00})を取得します。 – Yuri

+0

こんにちはトニー、あなたの編集のためのthnx! 残念ながら、これはまだ動作しません。 XmlValueのgetterが呼び出され、TimeSpan _valueが初期化されるため、XmlValueゲッターは "PT0S"を返します。したがって、良いことは、_valueがNULL値で初期化できる/ null値である場合、これが確実に機能するということです。私はそうしようとしましたが、XmlConvertメソッドを動作させることができませんでした:( あなたは何か提案がありますか? – Yuri

関連する問題