WCF枚举 - 任何传输有效枚举值和数字的方法

时间:2010-06-07 15:33:13

标签: .net wcf enums

假设你有:

 public enum Priority : short
        {

            Low = 100
            Normal = 200,
            High = 300
        }

我想通过以下电话

来呼叫WCF服务
myWCF.call(Priority.Low);
myWCF.call(Priority.High);
myWCF.call(105);

如果不重写一半的WCF堆栈,这可能吗?我更喜欢作为解决方案,其中所有WCF配置设置都将用于枚举类型。

感谢。

1 个答案:

答案 0 :(得分:1)

是的,确定 - 您可以在数据合同中添加第二个属性,该属性反映了枚举的int值:

[DataContract]
public class YourData
{
   [DataMember]
   public Priority MyPriority { get; set; }

   [DataMember]
   public int MyPriorityAsInt 
   {  
      get { return (int)MyPriority; }
      set { ; }
   }
}

我认为这应该有效 - MyPriorityAsInt应始终准确反映MyPriority中存储的值。如果您愿意,您甚至可以为MyPriorityAsInt创建setter方法,以根据需要设置MyPriority的值。