Атрибуты и элементы, отсутствующие в сериализованном объекте - PullRequest
0 голосов
/ 06 июля 2010

У меня есть несколько сгенерированных прокси-классов, которые содержат свойства с атрибутом XMLAttribute, например,

[System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, Namespace="http://www.egem.nl/StUF/StUF0301")]
public Verwerkingssoort verwerkingssoort
{
    get
    {
        return this.verwerkingssoortField;
    }
    set
    {
        this.verwerkingssoortField = value;
    }
}

Однако это и некоторые другие свойства не отображаются в сообщении SOAP. Прокси были сгенерированы с использованием svcutil.

Когда я пишу этот вопрос, я замечаю, что свойства, которые отображаются в виде атрибутов, являются строками, а это Enum (но я еще не провёл тщательной проверки). Кто-нибудь знает, если это проблема, или что еще это может быть и какие возможные решения есть?

Обновление: После еще одной проверки я обнаружил, что в качестве атрибута не включены перечисления, но Strings и Bools работают нормально.

Обновление 2: В простом случае атрибут Enum as сериализуется просто отлично.

Обновление 3: Если я заменю XmlAttributeAttribute(...) на XmlIgnoreAttribute() и добавлю следующее свойство:

[System.Xml.Serialization.XmlAttributeAttribute("verwerkingssoort")]
public string verwerkingssoortString
{
    get
    {
        return this.verwerkingssoortField.ToString();
    }
    set
    {
        this.verwerkingssoortField = (Verwerkingssoort)System.Enum.Parse(typeof(Verwerkingssoort), value, true);
    }
}

все работает нормально, но внесение подобных изменений во всем сгенерированном коде было бы довольно геркулесовой задачей, и когда контракт изменился, мне пришлось бы делать это снова и снова. Поэтому я все еще ищу лучшее решение.

Обновление 4: Оказывается, эта проблема не ограничивается атрибутами. Я только что заметил, что свойство, которое должно быть сериализовано для элемента, также опущено. Применяется то же самое: это Enum, и он отлично работает, если я изменяю его на строку.

Спасибо, привет,

Миэль.

1 Ответ

0 голосов
/ 06 июля 2010

Вы пытались установить свойство Type класса XmlAttributeAttribute для типа вашего перечисления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...