1

Я использую WCF. У меня есть следующие классы моделей. Когда объект сериализации списка cIntList свойство Name теряется. Я нашел ответ здесь: When a class is inherited from List<>, XmlSerializer doesn't serialize other attributes. Однако важно, чтобы я не создавал класс контейнера, только изменял одну и ту же сериализацию. Может ли кто-нибудь помочь мне изменить класс, чтобы позволить его сериализация в соответствии с моими ожиданиями?Потерянные атрибуты в сериализации Список <> унаследованный класс

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

ответ

1

Если вы измените класс, он также сериализует поле имени.

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

Вы можете изменить или удалить атрибут XmlElement в зависимости от вашего желаемого xml.

+0

Фактически, это, вероятно, лучший способ реализовать мою функциональность. –