使用NetDataContractSerializer序列化枚举
本文关键字:枚举 序列化 NetDataContractSerializer 使用 | 更新日期: 2023-09-27 18:19:55
我有以下内容:
[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);
枚举没有被序列化,当我反序列化时,我会得到枚举的默认值。
我错过了什么?
用EnumMemeber装饰它,就像一样
[DataContract(Name = "SimulationExceptionStatusCode")]
public enum SimulationExceptionStatusCode
{
[EnumMember]
SimulationInstanceNotExist,
[EnumMember]
LocationNotExist,
[EnumMember]
InvalidOperation,
[EnumMember]
GeneralError
}
我也遇到了同样的问题
我做了一个简单的解决方案,当发送枚举时,将其转换为int/string,发送int/string(在数据约定中-我在WCF中传递了它),然后在服务中,将int/string转换为您的枚举。
当强制转换回枚举时,使用
Enum.Parse(..)