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

在你的代码性能,您设置各种布尔值,但设置相关的指定值。我遇到了类似的问题,并且为我设置了指定的值。

相关问题