Restsharp и десериализация производных типов - PullRequest
0 голосов
/ 04 марта 2012

Рассмотрим следующий XML:

<events xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" artist="Rammstein"    festivalsonly="0" page="1" perPage="50" totalPages="1" total="25">
    <event xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
        <id>1985967</id>
        <title>Rammstein: "Made in Germany 1995 -2011 LIVE"</title>
        <artists>
            <artist>Rammstein</artist>
            <artist>Deathstars</artist>
            <headliner>Rammstein</headliner>
        </artists>
    </event>
</events>

Я хочу десериализовать все теги из artists в один список.То, что у меня есть на данный момент:

public class Artist
{
    public string Value { get; set; }
}

public class HeadLiner : Artist
{

}

public class ArtistCollection : List<Artist>
{

}

public class Event
{
    public ArtistCollection Artists { get; set; }
}

Я надеялся получить Список, содержащий 3 предмета здесь (два художника и один хедлайнер), но я получаю только художников.Возможно ли добиться такого поведения, работающего из коробки с Restsharp?Или мне нужен кастомный сериализатор?

Используя атрибуты, я думаю, мне понадобится атрибут XmlInclude, но я до сих пор люблю «из коробки» часть Restsharp.

1 Ответ

0 голосов
/ 27 апреля 2012

Со дня вашего поста я, вероятно, немного опоздал, но лучше поздно, чем никогда.

Я считаю, что ваш xml должен быть примерно таким:

<events xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" artist="Rammstein"    festivalsonly="0" page="1" perPage="50" totalPages="1" total="25">
   <event xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
       <id>1985967</id>
       <title>Rammstein: "Made in Germany 1995 -2011 LIVE"</title>
       <artists>
           <artist>Rammstein</artist>
           <artist>Deathstars</artist>
           <artist xsi:type="headliner">Rammstein</artist>
       </artists>
   </event>
</events>
...