[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,
}
来自服务公开合同
[OperationContract]
void PrintTraversePath(TreeTraversalType type);
但在客户端,它表示Serialization
不包含DataContractAttribute
。
此外,在编译服务之前,我得到了这个枚举的CLS不兼容错误,但后来没有任何相关的修改,它解决了(必须修改了一些我不知道的与此相关的东西)。
我的问题是,为什么这种编译错误行为以及什么是CLS合规性。我不能在Contract
服务定义中使用枚举类型吗?
答案 0 :(得分:1)
Enums在合同中工作正常。您是否在项目中引用了System.Runtime.Serialization.dll(其中定义了DataContractAttribute)?
答案 1 :(得分:1)
Runtime.Serialization命名空间可能缺少引用。
枚举不是问题。它们在数据合同中运作良好。