同一属性/类/上的多个XmlElement属性

时间:2009-01-28 15:42:16

标签: c# .net web-services attributes asmx

我将几个遗留的Web服务和当前的Web服务放在同一个后端。

但我必须保持旧的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;
        }
    }

1 个答案:

答案 0 :(得分:2)

我认为没有简单的方法。

序列化将失败,因为一个属性可能有两个不同的值。 哪一个比正确的一个?

也许我的一些想法可以帮助你...

1)创建一个XSLT,将当前的xml转换为旧格式并返回。    在XSLT中,您可以以最佳方式处理不同的值。

2)不要使用SerialisationAttributes。为它编写自己的方法并在那里处理不同的值。

3)使用您的类作为基础并创建两个子类。    使用覆盖和序列化属性填充两个子类。