通过WCF Rest暴露枚举.只显示一个属性

本文关键字:一个 属性 显示 Rest WCF 暴露 枚举 通过 | 更新日期: 2023-09-27 18:09:11

我试图通过我的WCF REST webservice暴露枚举。只显示一个属性。详情见下文。有人能告诉我为什么会这样吗?

  [DataContract]
    public enum OrderAttributes
    {
        [EnumMember]
        AppointmentRef,
        [EnumMember]
        AddressRef,
        [EnumMember]
        ContactEmail,
        [EnumMember]
        ContactFirstName
   }

[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "OrderAttributes")]
        [OperationContract(Name = "OrderAttributes")]
        DataLayer.OrderAttributes OrderAttributes();

  [PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
DataLayer.OrderAttributes IService.OrderAttributes() {
  return new OrderAttributes();
}

get的结果

<OrderAttributesResponse>
<OrderAttributesResult>AppointmentRef</OrderAttributesResult>
</OrderAttributesResponse>

通过WCF Rest暴露枚举.只显示一个属性

代码正在做您告诉它要做的事情,它返回一个OrderAttributes类型的单个值。在本例中,第一个enum为默认enum值。如果您需要OrderAttributes的列表,您必须手动构建并返回该列表。本文中的代码展示了如何创建该列表。

您实际上不需要将枚举标记为DataContract。代码生成器足够聪明,可以在代理代码中生成具有相应值的枚举。

因为您指定它是一个DataContract,它实际上创建了一个名为OrderAttributesclass而不是您的enum。