XmlWriter,使用数值写enum和bool

时间:2013-09-05 21:19:54

标签: c# xmlwriter

我想写出一系列XML元素。这些值大多是枚举或布尔。我想使用数值而不是字符串名来表示这些枚举和bools。 (主要是因为我已经写过这样做的阅读部分)

我不知道该怎么做。

对象类

 public class ApplicationConfiguration
        {
            public OperationalMode OperationalMode { get; set; }
            public bool MuteMedia { get; set; }
            public Stretch MediaStretch { get; set; }
            public DisplayMode DisplayMode { get; set; }
            public bool BlankSecondMonitor { get; set; }
            public String RemoteUri { get; set; }
        }

XML Writer Part

writer.WriteElementString("OperationalMode", configuration.OperationalMode.ToString());
writer.WriteElementString("MuteMedia",configuration.MuteMedia.ToString());
writer.WriteElementString("MediaStretch",configuration.MediaStretch.ToString());
writer.WriteElementString("DisplayMode",configuration.DisplayMode.ToString());
writer.WriteElementString("BlankSecondMonitor",configuration.BlankSecondMonitor.ToString();
writer.WriteElementString("RemoteUri",configuration.RemoteUri);

以上是写出枚举字符串名称和'true'或'false'。

我想用数值,我无法弄清楚如何。

由于

3 个答案:

答案 0 :(得分:3)

对于枚举值,只需转换为整数,然后再转换为字符串:

writer.WriteElementString("MediaStretch",
                          ((int)configuration.MediaStretch).ToString());

对于布尔值,这是不可能的,所以如果你想要0/1值,你可以使用conditional operator

writer.WriteElementString("MuteMedia",configuration.MuteMedia ? "1" : "0");

答案 1 :(得分:2)

将枚举值转换为int,然后转换为字符串:

    ((int)configuration.MediaStretch).ToString(CultureInfo.InvariantCulture)

而不是configuration.MediaStretch.ToString()

请注意,数字格式是特定于文化的 - 对于从文件(如XML)读取/写入文本数据的所有情况,都要传递文化(通常为InvariantCulture)。

答案 2 :(得分:2)

您也可以使用Convert.ToInt32来实现enum和bool的所需。

writer.WriteElementString("OperationalMode", Convert.ToInt32(configuration.OperationalMode).ToString());   
writer.WriteElementString("MuteMedia", Convert.ToInt32(configuration.MuteMedia).ToString());