2010-07-06 96 views
0

我有一些生成的代理类,它们包含具有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。

回答

0

您是否尝试过将类XmlAttributeAttribute类的Type属性设置为您的枚举类型?

+0

当我在引用的简单情况下尝试时,我得到一个excpetion(在荷兰语:()中,Type为XmlAttribute不能给出原始类型。 – Miel 2010-07-06 10:30:13