我有以下内容:
[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
问题在于,当我将异常转换为错误时:
// 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);
枚举没有被序列化,当我反序列化时,我得到了枚举的默认值。
我错过了什么?
答案 0 :(得分:0)
用EnumMemeber装饰它
[DataContract(Name = "SimulationExceptionStatusCode")]
public enum SimulationExceptionStatusCode
{
[EnumMember]
SimulationInstanceNotExist,
[EnumMember]
LocationNotExist,
[EnumMember]
InvalidOperation,
[EnumMember]
GeneralError
}
答案 1 :(得分:0)
我遇到了同样的问题 我做了一个简单的解决方案,可能对你有好处,当发送枚举,强制转换为int / string,发送int / string(在数据契约中 - 我在WCF中传递它),然后在服务上,强制转换int / string到你的枚举。
当转回枚举时,请使用
Enum.Parse(..)