enumの値をint型としてシリアライズするにはどうしたらいいですか?
2023-10-03 08:39:12
質問
enum-valueをint型としてシリアライズしたいのですが、名前しか取得できません。
以下は私の(サンプルの)クラスとenumです。
public class Request {
public RequestType request;
}
public enum RequestType
{
Booking = 1,
Confirmation = 2,
PreBooking = 4,
PreBookingConfirmation = 5,
BookingStatus = 6
}
そしてコード(間違っていないことを確認するため)。
Request req = new Request();
req.request = RequestType.Confirmation;
XmlSerializer xml = new XmlSerializer(req.GetType());
StringWriter writer = new StringWriter();
xml.Serialize(writer, req);
textBox1.Text = writer.ToString();
この回答 (は、enumがデフォルトでintsにシリアライズされるべきであることを示しているようですが、それはそうではないようです。以下は私の出力です。
<?xml version="1.0" encoding="utf-16"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<request>Confirmation</request>
</Request>
私は、すべての値に "[XmlEnum("X")]" 属性を付けることによって、値としてシリアライズすることができましたが、これはちょうど間違っているようです。
どのように解決するのですか?
たいていの場合、人々はint型ではなく、名前を求めています。そのためのシムプロパティを追加することができるのでは?
[XmlIgnore]
public MyEnum Foo {get;set;}
[XmlElement("Foo")]
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
public int FooInt32 {
get {return (int)Foo;}
set {Foo = (MyEnum)value;}
}
あるいは
IXmlSerializable
を使うこともできますが、これはたくさんの作業が必要です。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] Pythonで'Enum'を表現するにはどうしたらいいですか?
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] ポストバックまたはコールバックの引数が無効です。 イベント検証は '<pages enableEventValidation="true"/>' を使用して有効になっています。
-
[解決済み] WPFで角丸ボタンを作成する/作るには?
-
[解決済み] リファレンスの追加にSystem.Web.Mvcが表示されないのはなぜですか?
-
[解決済み] ASP.NET control to render a <div>
-
[解決済み] AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] 埋め込みリソーステキストファイルの読み方
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?
-
[解決済み] Math.Round(2.5)はなぜ3でなく2を返すのですか?