【发布时间】:2011-04-03 23:17:58
【问题描述】:
我正在尝试使用 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 属性中的有价值信息?
如果您什么都不做,数据服务会生成运行时错误(枚举是无效属性)。我看到的至少解决错误的唯一答案是将enum属性标记为已忽略,例如:
[System.Data.Services.IgnoreProperties("Status")]
public class Order ...
这可行,但它会迫使您从服务层“忽略”有价值的信息。 在 WCF 数据服务中使用枚举值是否还有其他选项?
编辑:请注意这是 WCF 数据服务(又名 Astoria)。这不是原始 WCF 服务,在这种情况下答案会更清楚。
【问题讨论】:
-
建议避免在 Web 服务中使用枚举,因为它们会产生微妙的向后兼容问题。见stackoverflow.com/a/788281/52277
标签: c# wcf enums wcf-data-services odata