1

いくつかのレガシー Web サービスと現在の Web サービスを同じバックエンドに入れています。

しかし、古いインターフェイスと互換性のある古い Web サービスを維持する必要があります。

だから私の質問:

プロパティなどに複数の属性を設定する方法はありますか?

このような:

[XmlElement("AvailableFrom",... what I need...)]
[XmlElement("Available",... what I need...)]
public DateTime AvailableFrom{get; set;}

1 つの解決策は追加のプロパティを作成することですが、コードが肥大化するのは本当に好きではありません。

    private DateTime _availableFrom;

    [XmlElement("AvailableFrom")] 
    public DateTime AvailableFrom
    {
        get
        {
            return _availableFrom;
        }
        set
        {
            _availableFrom = value;
        }
    }

    [XmlElement("Available")] 
    public DateTime Available
    {
        get
        {
            return _availableFrom;   
        }
        set
        {
            _availableFrom = value;
        }
    }
4

1 に答える 1

2

あなたにとって簡単な方法はないと思います。

1 つのプロパティに対して 2 つの異なる値が存在する可能性があるため、シリアル化は失敗します。右のものよりどれですか?

おそらく私のアイデアのいくつかはあなたを助けることができます...

1) XSLT を作成して、現在の xml を古い形式に変換し、元に戻します。XSLT では、さまざまな値を最適な方法で処理できます。

また

2) SerialisationAttributes を使用しないでください。独自のメソッドを作成し、そこでさまざまな値を処理します。

また

3) クラスをベースとして使用し、2 つの子クラスを作成します。2 つの子クラスにオーバーライドとシリアライゼーション用の属性を入力します。

于 2009-03-14T14:30:50.917 に答える