У меня есть несколько сгенерированных прокси-классов, которые содержат свойства с атрибутом 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, и он отлично работает, если я изменяю его на строку.
Спасибо, привет,
Миэль.