.net紧凑框架反序列化

时间:2012-07-26 12:44:59

标签: xml serialization compact-framework custom-attributes

我有一个.net 4类,它使用ReadOnly属性进行修饰。 我试图在.NET Compact 3.5项目中序列化这个类,但是我收到一个错误: “反映类型IpSettings时出现错误” 据我所知.NET CF不包含任何自定义属性,但我不需要序列化此属性。有没有办法跳过属性序列化? 谢谢, 亚历克斯

public class IpSettings
    {
        [ReadOnly(true)]
        public string IP { get; set; }

public string Mask { get; set; } public string Gateway { get; set; } public string DNS1 { get; set; } public string DNS2 { get; set; } }

var serializer = new System.Xml.Serialization.XmlSerializer(typeof(IpSettings));

2 个答案:

答案 0 :(得分:0)

您可以通过.NET CF中的属性控制xml序列化。要使序列化系统忽略属性,可以使用XmlIgnore属性来装饰它:

public class IpSettings
{

    [System.Xml.Serialization.XmlIgnore]
    public string IP { get; set; }


    public string Mask { get; set; }

    public string Gateway { get; set; }

    public string DNS1 { get; set; }

    public string DNS2 { get; set; }

}

答案 1 :(得分:0)

我发现在尝试查看如何解决Compact Framework的问题时,我经常需要重新思考如何解决问题。

考虑类似下面的代码。它仍然允许您的字符串IP只读

public class IpSettings
{

    private string ip;

    public IpSettings()
    {
    }

    public IpSettings(string ipAddress)
    {
      ip = ipAddress;
    }

    public string IP { get { return ip; } }

    public string Mask { get; set; }

    public string Gateway { get; set; }

    public string DNS1 { get; set; }

    public string DNS2 { get; set; }

    public static IpSettings Load() {
      var ipSetting = new IpSettings();
      // code to load your serialized settings
      ipSettings.ip = // some value you just read
      return ipSettings;
    }

}

这将使您作为程序员在课堂上具有灵活性,同时仍然保留IP字段的只读属性。