首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NetDataContractSerializer实现枚举的序列化

使用NetDataContractSerializer实现枚举的序列化
EN

Stack Overflow用户
提问于 2013-06-26 22:45:48
回答 2查看 392关注 0票数 0

我有以下几点:

代码语言:javascript
复制
[Serializable]
public class SimulationException : Exception
{
    public SimulationExceptionStatusCode StatusCode { get; set; }

    public SimulationException()
    { }

    public SimulationException(string msg) : base(msg)
    { }

    protected SimulationException(SerializationInfo info, StreamingContext context)
        : base(info, context)
    { }
}

[Serializable]
public enum SimulationExceptionStatusCode
{
    SimulationInstanceNotExist,
    LocationNotExist,
    InvalidOperation,
    GeneralError
}

我在客户端-服务器wcf中使用以下代码在错误和异常之间进行转换:Converting Fault to exceptions

问题是,当我使用以下代码将异常转换为错误时:

代码语言:javascript
复制
// converting to error to falut message Fault
MessageFault messageFault = MessageFault.CreateFault(
                new FaultCode("Sender"),
                new FaultReason(error.Message),
                error,
                new NetDataContractSerializer());
fault = Message.CreateMessage(version, messageFault, null);

枚举没有被序列化,当我反序列化时,我得到了枚举的默认值。

我遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2013-06-26 22:49:48

使用EnumMemeber来装饰它,如下所示

代码语言:javascript
复制
[DataContract(Name = "SimulationExceptionStatusCode")]
public enum SimulationExceptionStatusCode
{
    [EnumMember]
    SimulationInstanceNotExist,
    [EnumMember]
    LocationNotExist,
    [EnumMember]
    InvalidOperation,
    [EnumMember]
    GeneralError
}
票数 0
EN

Stack Overflow用户

发布于 2013-06-26 23:14:07

我也有同样的问题。

我做了一个简单的变通办法,可能对你有好处,当发送枚举时,转换为int/string,发送int/string (在数据契约中-我在WCF中传递了它),然后在服务中,将int/string转换为枚举。

当转换回枚举时,使用

代码语言:javascript
复制
Enum.Parse(..)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17323341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档