C# XmlWriter,使用数值写入enum和bool

C# XmlWriter,使用数值写入enum和bool,c#,xmlwriter,C#,Xmlwriter,我想写出一系列XML元素。这些值主要是枚举或布尔值。我希望使用数值而不是字符串名称来表示这些枚举和布尔。主要是因为我已经写了阅读部分 我不知道怎么做 对象类 public class ApplicationConfiguration { public OperationalMode OperationalMode { get; set; } public bool MuteMedia { get; set; }

我想写出一系列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);
上面写的是枚举字符串名称和'true'或'false'

我想用数值,我不知道怎么用

谢谢

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

    ((int)configuration.MediaStretch).ToString(CultureInfo.InvariantCulture)
而不是configuration.MediaStretch.ToString


请注意,数字格式是特定于区域性的-对于从XML等文件读取/写入文本数据的所有情况,传递区域性通常是不变的。对于枚举值,只需在转换为字符串之前转换为整数:

writer.WriteElementString("MediaStretch",
                          ((int)configuration.MediaStretch).ToString());
对于布尔值,这是不可能的,因此如果您想要0/1的值,可以使用:


您还可以使用Convert.ToInt32实现对enum和bool的要求

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

所有答案都很好,谢谢。
writer.WriteElementString("OperationalMode", Convert.ToInt32(configuration.OperationalMode).ToString());   
writer.WriteElementString("MuteMedia", Convert.ToInt32(configuration.MuteMedia).ToString());