I am using WCF. I have the following model classes. When the object serialization list cIntList property Name is lost. I found the answer here: When a class is inherited from List<>, XmlSerializer doesn't serialize other attributes. However, important to me not to build a container class only modify the same serialization. Can anyone help me modify the class so as to allow its serialization in line with my expectations?

   public class IntData
    {
        public int Value;
        public IntData()
        {
        }
    }

    public class cIntList : List<IntData>
    {
        public string Name;

        public cIntList()
        {
            Name = "Name";
            this.Add(new IntData() { Value = 1 });
            this.Add(new IntData() { Value = 2 });
        }
    }
有帮助吗?

解决方案

If you change the class it will serialize the name field too.

public class cIntList
{
    public string Name{ get; set; }

    [XmlElement("")]
    public List<IntData> IntList{ get; set; }

    public cIntList()
    {
        Name = "Name";
        IntList = new List<IntData>();
        IntList.Add(new IntData() { Value = 1 });
        IntList.Add(new IntData() { Value = 2 });
    }
}

You can change or remove the XmlElement attribute depending on your desired xml.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top