Свойство сброса сериализации C # в подклассе? - PullRequest
2 голосов
/ 20 января 2010

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

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>
{

}

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

1 Ответ

3 голосов
/ 20 января 2010

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

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

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

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

}
...