我有一些生成的代理类,它们包含具有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(但我还没有进行彻底的检查)。有人知道这是否是问题,或者它可能是什么以及有什么可能的解决方案?
更新 经过一些检查后,我发现没有包含Enum作为属性,但是Strings和Bools工作正常。
更新2: 在simple case枚举中,属性被序列化就好了。
更新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: 事实证明,这个问题不仅限于属性。我只是注意到也应该省略应该序列化为元素的属性。同样的事情适用:它是一个枚举,如果我把它改成一个字符串就可以正常工作。
谢谢,问候,
米尔。
答案 0 :(得分:0)
您是否尝试将Type
类的XmlAttributeAttribute
属性设置为枚举类型?