c# - 在 WCF 数据服务中使用枚举

标签 c# wcf enums wcf-data-services odata

我正在尝试使用 POCO 数据模型手动构建 WCF 数据服务,但我不知道如何正确公开 enum 值。假设一个简单的模型如下:

public class Order
{
   public int ID {get; set;}
   public string Description {get; set;}
   public OrderStatus Status {get; set;}
}

public enum OrderStatus
{
   New,
   InProcess,
   Complete
}

如何通过 OData WCF 数据服务公开 OrderStatus 属性中的有值(value)信息?

如果您什么都不做,数据服务会生成运行时错误(枚举是无效属性)。我看到的至少解决错误的唯一答案是将 enum 属性标记为已忽略,例如:

[System.Data.Services.IgnoreProperties("Status")]
public class Order ...

这可行,但它迫使您从服务层“省略”有值(value)的信息。 在 WCF 数据服务中是否有其他选项可用于处理枚举值?

编辑:请注意这是WCF 数据服务(又名Astoria)。这不是原始 WCF 服务,在这种情况下答案会更清楚。

最佳答案

WCF 数据服务目前不支持枚举(OData 协议(protocol)也不支持它们)。 典型的解决方法是使用字符串和常量值,或者整数和常量值。

关于c# - 在 WCF 数据服务中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570249/

相关文章:

c# - 2 个数字范围之一中的“where”属性

wcf - 是什么导致 Azure 服务总线中继 WCF 服务抛出 AddressAlreadyInUseException

java - 颜色代码枚举

c# - 在没有命名空间的情况下运行 linq-to-XML 操作

c# - 为什么 C++ 读取字节结果与 C# 不同?

c# - node js中的Windows命名管道(首选共享内存)

WCF 客户端使用证书和用户名/密码凭据?

c# - 向 WCF RequestSecurityToken 消息添加 header

c++ - 将枚举定义为带有 or 的标志

c++ - Windows 到 Linux 中的枚举声明