none
Сериализация класса в WPF RRS feed

  • Вопрос

  • У меня есть класс PC, который я стерилизую, в этом классе есть свойство

    public IPAddress IP { get; set; } 

    так я сериализую

    using(Stream fStream = new FileStream("Настройки.xml", FileMode.OpenOrCreate))
    
    {
    
     XmlSerializer xmlSer = new XmlSerializer(typeof(List<PC>), 
    
      new Type[] { typeof(PC), typeof(Account), typeof(IPAddress) });
    
     
    
     xmlSer.Serialize(fStream, listPC);
    
    }
    
    
    
    
    
    

     

    Так вот поле IP не удается сериализавать потому что класс IPAddress не имеет конструктора по умолчанию.

    Сыпется Exception

    {"Невозможно сериализовать System.Net.IPAddress, т. к. он не имеет беспараметрического конструктора."}

     

    Как мне сериализавать свойство IP? по возможности не меняя тип свойства

    13 апреля 2011 г. 22:27

Ответы

  • Плюсуйте отзыв на Microsoft Connect - IPAddress could not Serialize via XMLSerializer. И смотрите секцию workarounds:

    public class ToSerialize
    {
      [XmlElement(ElementName = "IPAddress")]
      public string IPAddressAsString
      {
        get { return IPAddress != null ? IPAddress.ToString() : null; }
        set
        {
          IPAddress a;
          if (value != null && IPAddress.TryParse(value, out a))
            IPAddress = a;
          else
            IPAddress = null;
        }
      }
      [XmlIgnore]
      public IPAddress IPAddress { get; set; }
    }
    
    

     


    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 15 апреля 2011 г. 9:20
    14 апреля 2011 г. 8:25