0

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

我不知道该怎么做。

项目等级

 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.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);

以上是写出枚举字符串名称和“真”或“假”。

我想使用数值,我不知道如何使用。

谢谢

4

3 回答 3

3

对于枚举值,只需在转换为字符串之前转换为整数:

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

对于布尔值,这是不可能的,所以如果你想要 0/1 值,你可以使用条件运算符

writer.WriteElementString("MuteMedia",configuration.MuteMedia ? "1" : "0");
于 2013-09-05T21:24:43.367 回答
2

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

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

代替configuration.MediaStretch.ToString()

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

于 2013-09-05T21:24:35.423 回答
2

您还可以使用 Convert.ToInt32 来实现您想要的 enum 和 bool。

writer.WriteElementString("OperationalMode", Convert.ToInt32(configuration.OperationalMode).ToString());   
writer.WriteElementString("MuteMedia", Convert.ToInt32(configuration.MuteMedia).ToString());
于 2013-09-05T21:31:48.160 回答