- PR -

構造体について

1
投稿者投稿内容
ガテン系
会議室デビュー日: 2003/07/04
投稿数: 9
投稿日時: 2003-07-04 11:03
Sessionの管理をStateServerで行うことにしたのですが
構造体をSessionの領域に保存しようとすると
「例外の詳細: System.Runtime.Serialization.SerializationException: …… の型
hogehoge は シリアル化可能として設定されていません。」
と出ました。
StateServerでSession管理する際には、データをシリアル化するため
構造体にserializable属性が必要であるということまでは分かったのですが、
その属性は構造体に追加できるものなのか、どのようにすれば追加できるのかが
どうしても分かりません。
ご存知の方がいましたらご教授お願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-04 14:46
こんにちは。
引用:

ガテン系さんの書き込み (2003-07-04 11:03) より:
StateServerでSession管理する際には、データをシリアル化するため
構造体にserializable属性が必要であるということまでは分かったのですが、
その属性は構造体に追加できるものなのか、どのようにすれば追加できるのかが
どうしても分かりません。


 構造体の先頭に

<Serialize()> ←VB.NETの場合

と記述してみてください。C#の場合は、適宜変更してください。これで通ればOK。

 もっと細かい制御がしたいときは、ここの過去ログをあさってください。ポストしています。



↓そうでした、忘れてました

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-07-05 19:14 ]

↓↓ああ!さらにそうでした。[Serialize]ではなく、[Serializable]でした。失礼しました。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-07-07 12:54 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-07-05 01:21
やや注意が必要な事ですが、構造体をSerializableにする場合、
構造体のメンバの全てがシリアライズ可能でなければなりません。

基本型のメンバ等だけを持つような構造体なら大丈夫ですが、
自作のクラスへの参照をメンバとして持っているような場合は注意してください。
ガテン系
会議室デビュー日: 2003/07/04
投稿数: 9
投稿日時: 2003-07-07 12:48
Jittaさん、なちゃさんありがとうございます!
私はC#で作ってるので、Jittaさんのご意見をいただいて試してみたのですが

[SerializableAttribute]
public struct hoge
{

}

でなんとか解決できました。
私の悪い癖で違う方向にぶっちぎってしまってたため時間がかかりましたけど…。
とても助かりました!
1

スキルアップ/キャリアアップ(JOB@IT)