3

私がこのようなxmlを持っているとしましょう:

<Server Active="No">
    <Url>http://some.url</Url>
</Server>

C#クラスは次のようになります。

public class Server
{
   [XmlAttribute()]
   public string Active { get; set; }

   public string Url { get; set; }
}

Activeプロパティをtypeに変更しbool、XmlSerializerにbool値に「Yes」「No」を強制させることは可能ですか?

編集:Xmlを受信しましたが、変更できません。したがって、実際には、逆シリアル化のみに関心があります。

4

3 に答える 3

3

私は2番目のプロパティを見るかもしれません:

[XmlIgnore]
public bool Active { get; set; }

[XmlAttribute("Active"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public string ActiveString {
    get { return Active ? "Yes" : "No"; }
    set {
        switch(value) {
            case "Yes": Active = true; break;
            case "No": Active = false; break;
            default: throw new ArgumentOutOfRangeException();
        }
    }
}
于 2010-03-24T13:19:52.803 に答える
2

はい、IXmlSerializableを実装でき、xml のシリアル化と逆シリアル化の方法を制御できます。

于 2010-03-24T13:14:29.560 に答える
0
public class Server
{
   [XmlAttribute()]
   public bool Active { get; set; }

   public string Url { get; set; }
}

前のクラスは、シリアル化された形式で終了する必要があります。

<Server Active="false">
    <Url>http://some.url</Url>
</Server>
于 2010-03-24T13:17:11.990 に答える