2011-08-05 44 views
1

我在發送到導線之前序列化對象時出現問題。忽略WCF Enum屬性的XMLSerialization

基本上我希望我的對象序列化爲

<verb operation="and">Show</verb> 

但是它忽視了作爲

<verb>Show</verb> 

下面的屬性是客戶端代理代碼

/// <remarks/> 
[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil", "3.0.4506.2152")] 
[System.SerializableAttribute()] 
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.starstandards.org/webservices/2005/10/transport")] 
public enum OperationEnumeratedType 
{ 

    /// <remarks/> 
    /// 
    and, 

    /// <remarks/> 
    /// 
    or, 

    /// <remarks/> 
    /// 
    not, 
} 


     /// <remarks/> 
    [System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)] 
    public OperationEnumeratedType operation 
    { 
     get 
     { 
      return this.operationField; 
     } 
     set 
     { 
      this.operationField = value; 
     } 
    } 

和下面是我如何創建這個對象。

    verb = new CriteriaLogicStringType 
        { 
         operation = OperationEnumeratedType.and, 
         Value = "Show" 
        } 

有沒有人知道我怎麼能得到操作屬性出現在序列化的XML?

感謝

回答

1

你應該裝點OperationEnumeratedType枚舉成員與EnumMemberAttribute,就像這樣:

[DataContract] 
public enum OperationEnumeratedType 
{ 
    [EnumMember] 
    And, 
    [EnumMember] 
    Or, 
    [EnumMember] 
    Not 
} 

相關資源:

+0

感謝您的快速回復。不幸的是,我僅限於使用生成的使用XmlSerialization的代理類。你知道如何使用XmlSerialization來實現這個嗎? – daehaai

+0

@activebiz如何將請求發送到服務? –

+0

我使用的是使用ClientBase的WCF代理。我已經嘗試了以上,但結果相同。是否因爲我有使用XmlSerilizer的代理的其餘部分? – daehaai