2010-07-06 91 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