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

私も同じ問題を抱えていました。
列挙型を送信し、int/stringにキャストし、int/stringを送信し(データコントラクトで-WCFで渡しました)、次にサービスで、 int/string を列挙型に追加します。

列挙型にキャストバックするときは、使用します

Enum.Parse(..)
于 2013-06-26T15:14:07.040 に答える
0

のように EnumMemeber で装飾します

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