2012-03-19 106 views
0

最初的問題是,當我使用類型調用webservice(asmx)方法時,類型始終爲空。檢查肥皂證實這種類型是空的元素。所以我嘗試了一個簡單的測試。
下面是這當然已經從WSDL爲什麼我的類型沒有被XmlSerializer正確序列化

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")] 
[System.SerializableAttribute()] 
[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.ComponentModel.DesignerCategoryAttribute("code")] 
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto12.api.echosign")] 
public partial class SendDocumentInteractiveOptions { 

    private bool authoringRequestedField; 

    private bool authoringRequestedFieldSpecified; 

    private bool autoLoginUserField; 

    private bool autoLoginUserFieldSpecified; 

    private bool noChromeField; 

    private bool noChromeFieldSpecified; 

    /// <remarks/> 
    public bool authoringRequested { 
     get { 
      return this.authoringRequestedField; 
     } 
     set { 
      this.authoringRequestedField = value; 
     } 
    } 

    /// <remarks/> 
    [System.Xml.Serialization.XmlIgnoreAttribute()] 
    public bool authoringRequestedSpecified { 
     get { 
      return this.authoringRequestedFieldSpecified; 
     } 
     set { 
      this.authoringRequestedFieldSpecified = value; 
     } 
    } 

    /// <remarks/> 
    public bool autoLoginUser { 
     get { 
      return this.autoLoginUserField; 
     } 
     set { 
      this.autoLoginUserField = value; 
     } 
    } 

    /// <remarks/> 
    [System.Xml.Serialization.XmlIgnoreAttribute()] 
    public bool autoLoginUserSpecified { 
     get { 
      return this.autoLoginUserFieldSpecified; 
     } 
     set { 
      this.autoLoginUserFieldSpecified = value; 
     } 
    } 

    /// <remarks/> 
    public bool noChrome { 
     get { 
      return this.noChromeField; 
     } 
     set { 
      this.noChromeField = value; 
     } 
    } 

    /// <remarks/> 
    [System.Xml.Serialization.XmlIgnoreAttribute()] 
    public bool noChromeSpecified { 
     get { 
      return this.noChromeFieldSpecified; 
     } 
     set { 
      this.noChromeFieldSpecified = value; 
     } 
    } 
} 

產生我喜歡的類型現在,這裏是一些簡單的代碼序列化。

SendDocumentInteractiveOptions sdio = new SendDocumentInteractiveOptions(); 
sdio.authoringRequested = true; 
sdio.autoLoginUser = true; 
sdio.noChrome = true; 
XmlSerializer xmlSer = new XmlSerializer(typeof(SendDocumentInteractiveOptions)); 
XmlWriter xw = new XmlTextWriter(@"g:\test.xml", null); 
xmlSer.Serialize(xw, sdio); 
xw.Close(); 

這裏是所得到的XML

& LT?XML版本= 「1.0」? & GT & ltSendDocumentInteractiveOptions的xmlns:XSD = 「http://www.w3.org/2001/XMLSchema」 的xmlns:的xsi = 「http://www.w3.org/2001/XMLSchema-instance」/ & GT

那麼我在這裏錯過了什麼。爲什麼我的公共屬性沒有被序列化?

回答

1

這是一個古老的問題,但哦。我認爲解決方案可能在另一個問題"Why isn't my public property serialized by the XmlSerializer?"。部分答案列出原因屬性不會被序列化,並在該名單是

  • 它具有公共BOOL FooSpecified {獲得;設置;}即返回false

在你的代碼性能,您設置各種布爾值,但設置相關的指定值。我遇到了類似的問題,並且爲我設置了指定的值。

相關問題