2009-01-28 82 views
1

我將幾個傳統Web服務和當前Web服務放入同一個後端。同一屬性/類上的多個XmlElement屬性/

但我必須保持舊的Web服務與舊界面兼容。

所以我的問題:

有沒有一種方法我可以設置幾個屬性,例如,一個屬性?

像這樣:

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

一個解決方案是創建額外的屬性,但我真的不喜歡的代碼膨脹。

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

回答

2

我覺得沒有簡單的方法給你。

序列化將失敗,因爲一個屬性可能有兩個不同的值。 哪一個比正確的?

也許我的一些想法可以幫助你......

1)創建一個XSLT當前的XML轉換成舊格式和背部。 在XSLT中,您可以以最佳方式處理不同的值。

2)不要使用SerialisationAttributes。編寫自己的方法並處理其中的不同值。

3)使用你的類作爲基礎,並創建兩個子類。 使用覆蓋和序列化屬性填充兩個子類。