0

我有以下内容:

[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 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);

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

我错过了什么?

4

2 回答 2

0

像这样用 EnumMemeber 装饰它

[DataContract(Name = "SimulationExceptionStatusCode")]
public enum SimulationExceptionStatusCode
{
    [EnumMember]
    SimulationInstanceNotExist,
    [EnumMember]
    LocationNotExist,
    [EnumMember]
    InvalidOperation,
    [EnumMember]
    GeneralError
}
于 2013-06-26T14:49:47.677 回答
0

我有同样的问题。
我做了一个简单的解决方法,可能对你有好处,发送枚举时,转换为 int/string,发送 int/string(在数据合同中 - 我在 WCF 中传递它),然后在服务中,转换int/string 到你的枚举。

当转换回枚举时,使用

Enum.Parse(..)
于 2013-06-26T15:14:07.040 回答