夕暮ログ

C#やJavascript、最近はAndroidなんかも好きなtinqのブログ。「夕暮れログ」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

シリアライズできないクラスをデバッガビジュアライザでデバッグする

デバッガビジュアライザでデバッグするクラス、構造体はシリアライズ可能である必要があります。
シリアライズが可能とは、基本的に「SerializableAttribute」が指定されているクラスのことです。

ちなみに、C#などでは属性のAttributeは省略できるので、[Serializable()]だけで大丈夫です。
具体的には、以下のようにな指定になります。(MSDNより引用)

[Serializable()]
public class MyObject {
public int n1 = 0;
public int n2 = 0;
public String str = null;
}


ただし、含むフィールドやプロパティはすべてシリアライズ可能である必要があります。
標準ライブラリのデータなどを扱うクラスや構造体は、だいたいシリアライズ可能です。
なので、特殊な型や、コントロールを持たない場合、そのまま属性をつけるだけでよいでしょう。

自分でライブラリなどを作るときも、シリアライズされることを考えて、必ずシリアライズ属性をつけておきましょう。

ちなみに、標準のクラス・構造体がシリアライズできるかどうかは、MSDNで確認できます。
確認したいクラスや構造体のページを開き、「構文」の部分を見ます。
その中に[SerializableAttribute]があればシリアライズ可能です。
(見たことはありませんが、[[Serializable]や[Serializable()] などがあった場合も可能です)





ですが、やはりシリアライズ属性の無いクラスは存在します。
Serializable属性がついていないクラスにSerializableをつけるわけにはいきません。
その場合はどうするのでしょうか。

そういう場合には、シリアライズ可能な「プロキシクラス」を使って必要なデータをシリアライズします。
そして、その情報を元にデシリアライズします。




しかし、基本的にシリアライズができなクラスで、標準に含まれているものはシリアライズ処理が難しいもの、不可能なものが多いので注意してください。
次回、具体的に例を出して説明します。
関連記事

コメント

ここをクリックしてコメントを投稿

非公開コメント

トラックバック

http://tinqwill.blog59.fc2.com/tb.php/39-a4d3b419

« next  ホーム  prev »

プロフィール

tinq tinq(もしくはTinqWill)

Sky  For   Every 改装予定

プログラミングお勉強中の高校生。月一くらいは更新したい

最新記事

カテゴリ

月別アーカイブ

検索フォーム

最新コメント

リンク

最新トラックバック

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。