在WCF数据合同中使用Enum

时间:2016-11-04 18:30:48

标签: c# wcf enums datacontract datamember

我正在尝试创建一个WCF服务,其中一些枚举器公开给客户端以在类对象上设置某些属性。与不同操作关联的所有枚举器都放在一个单独的类中。

阅读完一些文章后我理解的是,如果,

可以在WCF服务的客户端访问枚举器
  • 枚举器在单独的DataContract中声明。对于我的情况,问题是我无法让客户端根据类的设计调用类似ClassName.Enum.Value的枚举器。出于某种原因,生成的wsdl将类名和枚举名称组合为枚举器的单个名称ClassNameEnumName,并且需要像Namespace.ClassNameEnumName一样进行访问。

  • 枚举类型的属性在包含枚举数的类中声明。这种方法的问题在于,我不需要这个属性,但这是我可以通过客户端上的代理生成器按预期识别并包含在代理类中的唯一方法,以便它可以像{{{ 1}}。另一个问题是它将这些属性公开给客户端,因为它需要用ClassName.Enum.Value进行修饰。我希望客户永远不会看到这些,因为客户永远不需要使用它。我不确定如何只展示枚举器而不显示支持属性,以便像[DataMember]一样使用它。

我理解的是,如果没有DataMember的显式实例,声明的对象永远不会在生成的代理类中定义。在我的情况下,我通过创建属性创建类似下面的模拟代码中的属性来实现它,但我担心这会引入不需要的DataMembers(如ClassName.Enum.ValueEnumErrType)客户。

所以问题是,如何在类中声明一个枚举器供客户端使用,可以像ErrType一样使用,而不必暴露支持属性,甚至不首先创建一个。

ClassName.Enum.Value

0 个答案:

没有答案