C# 客户端能否从WCF反序列化常量字段?

C# 客户端能否从WCF反序列化常量字段?,c#,wcf,C#,Wcf,我有一个客户端,它必须从WCF访问类的public const字段,但是当我引用WCF时,这些字段不会出现在客户端中,即使在所有字段中使用[DataMember] [DataContract] [Serializable] public class ProductTypes { [DataMember(Order = 0, IsRequired = true)] public const int UNKNOWN = 0;

我有一个客户端,它必须从WCF访问类的public const字段,但是当我引用WCF时,这些字段不会出现在客户端中,即使在所有字段中使用[DataMember]

    [DataContract]
    [Serializable]
    public class ProductTypes
    {
        [DataMember(Order = 0, IsRequired = true)]
        public const int UNKNOWN = 0;

        [DataMember]
        public const int EC_PF_VALEBROKER = 1;

        [DataMember]
        public const int EC_PC_IRCALC = 2;

        [DataMember]
        public const int EC_PR_VALEBROKERPRO = 3;

        [DataMember]
        public const int EC_PF_MOBILEBROKER = 4;

        [DataMember]
        public const int EC_PF_VALEBROKERPLATAFORM = 5;
}

Const不是实例的成员,它是类的成员(比如静态字段),所以在反序列化时不应该包含它。这是一个奇怪的请求,原因很多。1) 字段供私人使用和存储。他们不被视为班级或DTO合同的一部分。。无论您使用字段还是属性,客户端代理都会生成属性,这仅仅是因为XSD没有说明DTO是如何实现的。2)如果您想说
ProductType
有一系列有效值,常量是一个非常糟糕的主意。常数永远不变。类型值可以。一个常量也不表示其他常量或封闭类型。3)XSD中已经支持值限制、选项等。客户知道如何处理这些问题。不要发明自己的序列化格式。请检查