枚举XML反序列化

时间:2016-06-15 07:55:58

标签: c# asp.net-mvc datacontractserializer xml-deserialization

我尝试使用xml请求内容类型将请求发布到Asp.Net Web MVC。 在服务器中,我有这样的枚举对象:

    [DataContract(Namespace = DomainObject.SchemaNamespaceJuly2010)]
    [Serializable]
    public enum SampleTypes
    {
        [EnumMember]
        Invalid = 0,

        [EnumMember]
        Manual = 1,

        [EnumMember]
        Automated = 2
    }

如果我发送带有枚举内容<SampleTypes>Manual</SampleTypes>的请求,它可以正常工作,但如果我使用枚举类型的值<SampleTypes>1</SampleTypes>,则会出错:

  

无效的枚举值&#39; 1&#39;无法反序列化为类型&#39; SampleTypes&#39;。确保存在必要的枚举值,并且如果类型具有DataContractAttribute属性,则使用EnumMemberAttribute属性标记

所以我改变代码使用[EnumMember(Value =&#34;&#34;)],例如:

[DataContract(Namespace = DomainObject.SchemaNamespaceJuly2010)]
    [Serializable]
    public enum SampleTypes
    {
        [EnumMember(Value="0")]
        Invalid = 0,

        [EnumMember(Value="1")]
        Manual = 1,

        [EnumMember(Value="2")]
        Automated = 2
    }

然后<SampleTypes>1</SampleTypes>的枚举内容正常,但另一个会有错误。

所以我的问题是有任何想法可以帮助双方处罚吗?谢谢!

顺便说一句,对于xml序列化,我使用DataContractSerializer,代码示例:

var deserializer = new DataContractSerializer(typeof(T));
return (T)deserializer.ReadObject(serialData);

0 个答案:

没有答案