Как преобразовать объект в список коллекций

#c# #web-services #.net-4.5.2

#c# #веб-сервисы #.net-4.5.2

Вопрос:

У меня есть класс с именем Gender. У меня есть данные для чтения из веб-службы, и мне нужно преобразовать GenderObject в гендерную коллекцию, т.Е. List _GenderList = object.

 using (StreamReader _Reader = new StreamReader(_Stream))
  {
    GeneratedXPathString = _Reader.ReadToEnd();

    XmlDocument doc = new XmlDocument();
    doc.LoadXml(GeneratedXPathString);

   string xmlcontents = doc.InnerXml;

    Object GenderObject = SystemCore.XMLPrasing.ObjectToXML(xmlcontents, typeof(Gender));

   //  List<Gender> GenderObject2 = ((IEnumerable<Gender>)GenderObject).Cast<Gender>().ToList(); //get error here

 }
  

Гендерный класс

 [Serializable]
[XmlRoot("Genders")]
public class Gender
{

    [XmlElement("Genders")]
    public List<GenderListWrap> GenderListWrap = new List<GenderListWrap>();       
}


public class GenderListWrap
{
    [XmlAttribute("list")]
    public string ListTag { get; set; }

    [XmlElement("Item")]
    public List<Item> GenderList = new List<Item>();
}



public class Item
{
    [XmlElement("CODE")]
    public string Code { get; set; }

    [XmlElement("DESCRIPTION")]
    public string Description { get; set; }
}
  

Метод преобразования объекта в XML

 public static partial class XMLPrasing
{
    public static Object ObjectToXML(string xml, Type objectType)
    {
        StringReader strReader = null;
        XmlSerializer serializer = null;
        XmlTextReader xmlReader = null;
        Object obj = null;
        try
        {
            strReader = new StringReader(xml);
            serializer = new XmlSerializer(objectType);
            xmlReader = new XmlTextReader(strReader);
            obj = serializer.Deserialize(xmlReader);
        }
        catch (Exception exp)
        {
            //Handle Exception Code
            var s = "d";
        }
        finally
        {
            if (xmlReader != null)
            {
                xmlReader.Close();
            }
            if (strReader != null)
            {
                strReader.Close();
            }
        }
        return obj;
    }
  

GenderObject в режиме отладки

введите описание изображения здесь

XML-документ

 <Genders><Genders list="1">
 <Item>
    <CODE>M</CODE>
    <DESCRIPTION>Male</DESCRIPTION></Item>
 <Item>
     <CODE>F</CODE>
     <DESCRIPTION>Female</DESCRIPTION>
 </Item></Genders>
</Genders>"
  

Комментарии:

1. Можете ли вы опубликовать XML, который вы пытаетесь десериализовать?

2. привет, я обновил свой вопрос, но структура XML, возможно, будет отличаться для других веб-сервисов

3. Вы пробовали Object GenderObject = SystemCore.xmlпереработку. ObjectToXML(xmlcontents, typeof(IEnumerable<Пол>)); ?

4. могу ли я отправить универсальный объект вместо объекта в классе десериализации, поскольку я все равно знаю тип класса

5. typeof(IEnumerable<Gender>) дает мне нулевое значение