0

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

公共类 IpSettings
    {
        [只读(真)]
        公共字符串 IP { 获取;放; }

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));

4

2 回答 2

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

于 2012-07-26T16:30:41.427 回答
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; }

}
于 2012-07-26T12:55:55.320 回答