如何序列化System.Net.IPAddress属性中包含的类?

时间:2014-06-10 11:21:55

标签: c#

我想序列化具有属性IPAddress的类。

public class Person
{
    public IPAddress MasterIP { get; set; }
    public Person(){}
}


public void SerializeMyClass()
{
    Person obj=new Person();
    XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
    xmlSerializer.Serialize(obj);
}

但我收到错误:

  

"无法序列化IPaddress,因为它没有空构造函数"

1 个答案:

答案 0 :(得分:11)

您不能 - XmlSerializer只能序列化具有公共无参数构造函数的公共类的公共属性/字段。您可以查看其他序列化程序类型(如BinaryFormatter)或破解您的类,如:

public class Person {
  [XmlIgnore]
  public IPAddress MasterIP { get; set; }
  [XmlElement("MasterIP")]
  public string MasterIPForXml {
    get { return MasterIP.ToString(); }
    set { MasterIP = string.IsNullOrEmpty(value) ? null :
      IPAddress.Parse(value); 
    }
  }
}