如何序列化星期几以获得其编号
本文关键字:编号 序列化 | 更新日期: 2023-09-27 18:31:43
我有一个类,它有一个数据类型为DayOfWeek的属性,我需要将其序列化为XML,当我序列化它时,DayOfWeek按其名称序列化,如"星期一"等。我需要它的相关价值这是我的班级:
public class myClass
{
[XmlAttribute("DayOfWeek")]
public DayOfWeek myDay;
}
这是序列化字符串:
<myClass DayOfWeek="Monday" />
<myClass DayOfWeek="Friday" />
我的愿望格式应该是这样的:
<myClass DayOfWeek="1" />
<myClass DayOfWeek="5" />
我不能使用获取和设置。我认为这样做应该有一个属性。谢谢你的帮助。:)
这是我的序列化程序方法
public static SqlXml Serialize<T>(T dataObject, string defaultNamespace = DefaultNamespace)
{
var xmlSerializer = new XmlSerializer(typeof(T), defaultNamespace);
var wr = new StringWriter();
var settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, Encoding = Encoding.UTF8 };
using (var responseWriter = XmlWriter.Create(wr, settings))
{
if (responseWriter != null)
xmlSerializer.Serialize(responseWriter, dataObject);
}
using (var xmlReader = XmlReader.Create(new StringReader(wr.ToString())))
{
return new SqlXml(xmlReader);
}
}
此方法可以正常工作。
使用
[XmlIgnore]
然后创建一个返回其 int 值的属性。(虽然我很高兴发现有更好的内置方法。
有关详细信息,请参阅如何将枚举值序列化为 int?。
好的....这是我的最终(不是最好的)解决方案!
我刚刚创建了另一个枚举...
[Serializable]
public enum DayOfWeekEnum
{
[EnumMember]
[XmlEnum(Name = "0")]
Sunday = 0,
[EnumMember]
[XmlEnum(Name = "1")]
Monday = 1,
[EnumMember]
[XmlEnum(Name = "2")]
Tuesday = 2,
[EnumMember]
[XmlEnum(Name = "3")]
Wednesday = 3,
[EnumMember]
[XmlEnum(Name = "4")]
Thursday = 4,
[EnumMember]
[XmlEnum(Name = "5")]
Friday = 5,
[EnumMember]
[XmlEnum(Name = "6")]
Saturday = 6,
}