在序列化

时间:2017-04-20 08:41:16

标签: c# xml xml-serialization

首先让我说看到以下问题:

  1. Controlling order of serialization in C#:关于元素顺序
  2. How to specify the order of XmlAttributes, using XmlSerializer:答案只是说"你不是"
  3. net xmlserializer : keeping attributes order:再次说"你不要"或者备用答案表明你可以,但你必须自己完成所有的序列化
  4. 我也看到人们声明你在类中指定属性的顺序是它们将被序列化的顺序。但是,在我的情况下,我有一个具有属性的基类,所以这似乎没有成功。

    我有以下两个类:

    public class MyClass : BaseClass
    {
        [XmlAttribute()]
        public string Value1 { get; set; }
    
        public MyClass()
            : base()
        {
            Value1 = string.Empty;
        }
    }
    
    public class BaseClass
    {
        [XmlAttribute()]
        public string Value2 { get; set; }
    
        [XmlAttribute()]
        public string Value3 { get; set; }
    
        public BaseClass()
        {
            Value2 = string.Empty;
            Value3 = string.Empty;
        }
    }
    

    当序列化为XML元素的属性时,它们会按顺序显示Value2, Value3, Value1。我希望他们按照Value1, Value2, Value3的顺序出现。

    我使用以下方法将XML保存到磁盘:

    public static void Save<T>(string path, T contents)
    {
        using (StreamWriter sw = new StreamWriter(File.OpenWrite(path)))
        {
            XmlSerializer xml = new XmlSerializer(typeof(T));
            xml.Serialize(sw, contents, ns);
        }
    }
    

    有什么方法可以指定属性顺序吗?与元素一样:

    [XmlElementAttribute(Order = 1)] 
    

    对于那些会说类似于&#34的人;订单并不重要&#34;或者&#34;如果它有效,你为什么需要更改订单&#34;或者&#34; XML并不意味着可读&#34;。我的回答是肯定的,订单并不重要,而且有效。但是,当我调试我的代码并检查XML以确保它包含我期望的值时,如果属性按照我希望它们的顺序读取,则更容易阅读。

0 个答案:

没有答案