2009-01-28 99 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)使用你的类作为基础,并创建两个子类。 使用覆盖和序列化属性填充两个子类。