【问题标题】:How to serialize DayOfWeek to have its number?如何序列化 DayOfWeek 以获得它的编号?
【发布时间】:2013-09-16 22:27:46
【问题描述】:

我有一个具有数据类型 DayOfWeek 的属性的类,我需要将其序列化为 XML,当我对其进行序列化时,DayOfWeek 按其名称进行序列化,例如“星期一”等。我需要它的相关值 这是我的班级:

public class myClass
{
 [XmlAttribute("DayOfWeek")]
 public DayOfWeek myDay;
}

这是序列化字符串:

<myClass DayOfWeek="Monday" />
<myClass DayOfWeek="Friday" />

我想要的格式应该是这样的:

   <myClass DayOfWeek="1" />
   <myClass DayOfWeek="5" />

我无法使用 get 和 set。我认为应该有这样做的属性。 感谢您的帮助。 :)

这是我的序列化方法

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

此方法运行正常,没有任何问题。

【问题讨论】:

  • Here is my Class: 您的课程不可编译。
  • 您很可能使用 XmlSerializer,但为什么不包含有关如何序列化它的代码?
  • 是的,我正在使用 XmlSerializer。我正在编辑帖子。

标签: c# xml visual-studio serialization dayofweek


【解决方案1】:

使用

[XmlIgnore]

然后创建一个返回其 int 值的属性。 (虽然我很高兴发现有更好的内置方法。)

有关更多信息,请参阅How do I serialize an enum value as an int?

【讨论】:

  • 也许这是最好的办法
【解决方案2】:

好的....这是我的最终(而不是最好的)解决方案!

我刚刚创建了另一个枚举...

[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,
}

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2011-07-13
    • 2019-06-13
    相关资源
    最近更新 更多