我有一些生成的代理类,它们包含具有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生成的。
当我写这个问题时,我注意到属性是字符串,虽然这是一个枚举(但我还没有做彻底检查)。有人知道这是否是问题,还有其他可能的解决方案以及可能的解决方案?
更新: 一些检查后,我发现没有枚举包括作为属性,但字符串和BOOLS做工精细。
更新2: 在simple case 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: 事实证明,这个问题不限于属性。我只注意到,应该被序列化到一个元素的属性也被省略。同样的东西适用:它是一个枚举,并且如果我将其更改为字符串,它工作正常。
谢谢,问候,
Miel。
当我在引用的简单情况下尝试时,我得到一个excpetion(在荷兰语:()中,Type为XmlAttribute不能给出原始类型。 – Miel 2010-07-06 10:30:13