1

これが私のブロブです:

<Attributes>
  <SomeStuff>...</SomeStuff>
  <Dimensions>
    <Weight units="lbs">123</Weight>
    <Height units="in">123</Height>
    <Width units="in">123</Width>
    <Length units="in">123</Length>
  </Dimensions>
</Attributes>

クラス メンバーの xml 属性を使用して逆シリアル化しようとしていますが、問題が発生しています。単位と値で「ディメンション」タイプを使用しようとしています。ユニットを属性として取得し、値に値を取得するにはどうすればよいですか?

これが私が試していることです:

[Serializable]
public class Attributes
{
  public object SomeStuff { get; set; } // Not really...

  public Dimensions Dimensions { get; set; }
}

[Serializable]
public class Dimensions
{
    public Dimension Height { get; set; }

    public Dimension Weight { get; set; }

    public Dimension Length { get; set; }

    public Dimension Width { get; set; }
}

[Serializable]
public class Dimension 
{
    [XmlAttribute("units")]
    public string Units { get; set; }   

    [XmlElement]
    public decimal Value { get; set; }
}

このコードは、ディメンション内に実際の「値」要素が必要であることを知っています。しかし、XmlText 以外に、要素の実際のテキストを使用するように指示できる属性デコレータが .NET ライブラリに見つかりませんが、10 進数が必要です... プロキシ フィールドが唯一のオプションですか? (例えば

[XmlText] public string Text { get; set; }

[XmlIgnore]
public decimal Value
{
  get { return Decimal.Parse(this.Text); }
  set { this.Text = value.ToString("f2"); }
}

ありがとう。

4

1 に答える 1

3

XmlAttribute属性とXmlTextテキストに使用できます。public decimal Valueで飾られるように変更してみてください[XmlText]

[Serializable]
public class Dimension 
{
    [XmlAttribute("units")]
    public string Units { get; set; }   

    [XmlText]
    public decimal Value { get; set; }
}
于 2012-08-15T15:48:54.597 に答える