Search code examples
.netwcfwcf-binding

svcutil generated client side WCF service binding code which doesnt compile


 [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
 [System.Runtime.Serialization.DataContractAttribute(Name="TreeTraversalType", Namespace="http://schemas.datacontract.org/2004/07/DsLib")]
public enum TreeTraversalType : int
{
    [System.Runtime.Serialization.EnumMemberAttribute()]
    PreOrder = 0,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    InOrder = 1,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    PostOrder = 2,
}

from service exposing following contract

  [OperationContract]
  void PrintTraversePath(TreeTraversalType type);

But at client side, it says that Serialization does not contain DataContractAttribute.

Also, earlier while compiling the service, I got a CLS-non-compliant error for this enum, but later without any related modification, it resolved (must have modified something else which I don't know correlates with this).

My question is, why this compile-error behaviour and what is CLS-compliance. Can't I have enum type in a Contract definition of a service?


Solution

  • Enums work fine in contracts. Do you have a reference to System.Runtime.Serialization.dll (where DataContractAttribute is defined) in your project?