0

ReadOnly 属性で装飾された .net 4 クラスがあります。.NET Compact 3.5 プロジェクトでこのクラスをシリアル化しようとしていますが、次のエラーが表示されます。この属性をシリアル化する必要はありません。属性のシリアル化をスキップする方法はありますか? ありがとう、アレックス

パブリック クラス IpSettings
    {
        [読み取り専用(真)]
        パブリック文字列 IP { get; 設定; }

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

.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 に答える
0

Compact Framework に向けて何かに取り組む方法を考えようとすると、問題へのアプローチ方法を再考しなければならないことがよくあります。

次のコードのようなものを検討してください。IP文字列値をreadonlyにすることは引き続き許可されます。

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 に答える