Несколько атрибутов XmlElement в одном свойстве / классе / - PullRequest
1 голос
/ 28 января 2009

Я помещаю несколько устаревших веб-сервисов и текущий веб-сервис в один и тот же сервер.

Но я должен поддерживать совместимость старых веб-сервисов со старым интерфейсом.

Итак, мой вопрос:

Есть ли способ установить несколько атрибутов, например, для свойства?

Как это:

[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 Ответ

2 голосов
/ 14 марта 2009

Я думаю, что нет простого способа для вас.

Сериализация завершится ошибкой, поскольку для одного свойства могут быть два разных значения. Какой из них является правильным?

Возможно, некоторые мои идеи помогут вам ...

1) Создайте XSLT для преобразования текущего XML в старый формат и обратно. В XSLT вы можете обрабатывать различные значения наилучшим образом.

или

2) Не используйте атрибуты Serialisation. Напишите для него свой собственный метод и обработайте различные значения.

или

3) Используйте свой класс в качестве базового и создайте два дочерних класса. Заполните два дочерних класса переопределениями и атрибутами для сериализации.

...