2010-01-20 3 views
2

Когда я пытаюсь сериализации населенного экземпляр типа List<C>() где:C# сериализация свойства drop в подклассе?

public class A<T> : List<T> 
{ 
    [XmlAttribute("Name")] 
    public string Name {get; set;} 
    public A() {} 
} 

public class B 
{ 
    [XmlAttribute("Other")] 
    public string OtherPCO { get; set:} 
} 

public class C : A<B> 
{ 

} 

сериализация роняет Имя свойства класса А, но делает создать массив типа B со свойством OtherPCO. Как я могу заставить сериализатор включить Name?

ответ

3

Коллекции сериализуются определенным образом, что учитывает только элементы коллекции, а не дополнительные свойства, которые вы добавили в класс. Вам нужно обернуть коллекцию в другом классе, который не является коллекцией.

Это должно дать вам желаемый результат:

public class A<T> 
{ 
    [XmlAttribute("Name")] 
    public string Name {get; set;} 

    [XmlElement(typeof(T))] 
    public List<T> Items { get; set; } 

} 
+0

Это раздражает! Но спасибо за пример. – Oliver

Смежные вопросы