12

私はWCFサービスを持っています。これは MSMQ にバインドされていますが、ここでは問題ではありません。基本クラスと基本クラスに実装されたインターフェイスを持つオブジェクトをシリアル化でき、具象クラスは基本クラスから派生します-これは正常に機能します。

ただし、基本クラスに列挙型があり、その値を設定すると、逆シリアル化/MSMQ からの読み取りの後、その値はデフォルト値に設定されたままになります (つまり、コードで手動で設定された値ではありません)。

何が起こっているのですか?列挙型を DataContract としてマークし、さらに各列挙型メンバーを EnumMember 属性でマークしました。

列挙型をシリアル化するにはどうすればよいですか?

4

4 に答える 4

4

プロパティは保護されました。Publicおよびviolaに設定します-enumプロパティをシリアル化します。プロパティが低音クラスにあるのでちょっと悪い....むしろそれを保護してください

于 2012-05-14T23:52:15.987 に答える
4

これを試して。

[Serializable]
public enum EnumToSerialize
{
    [XmlEnum("1")]
    One = 1,
    [XmlEnum("2")]
    Two = 2
}
于 2012-05-14T19:07:04.337 に答える
1

MSDNでこの記事を試してください。この例では、列挙型でプロパティを設定してシリアル化できるようです。オブジェクトを逆シリアル化するときに、同じ値を取得できるはずです。

于 2012-05-14T23:23:28.643 に答える
0

私はこれを使用します。これは、パブリック列挙型で機能します。

[Serializable]
public enum EnumToSerialize
{
    [EnumMember]
    One = 1,
    [EnumMember]
    Two = 2
}
于 2015-03-20T13:48:53.587 に答える