Несколько атрибутов XmlElement в одном свойстве / классе /

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

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

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

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

Как это:

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

Решение

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

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

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

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

или же

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

или же

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

Другие вопросы по тегам