備忘録日記スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。絡みのメモを公開しています。StreamingContext)C#知ってると、ちょっと便利かもしれないTips。通常、Serializable属性が付与されていないクラスはシリアライズすることが出来ません。.NETにはシリアル化サロゲートという機能がありまして、これを利用するとSerializable属性が付与されていないクラスでもシリアライズ/デシリアライズが可能になります。シリアル化サロゲートを利用するには、以下のインターフェースを実装したクラスを作成する必要があります。System.Runtime.Serialization.ISerializationSurrogateインターフェースに定義されているメソッドは以下の2つです。selector)GetObjectDataメソッドがシリアライズする際に呼び出されるメソッドでSetObjectDataメソッドがデシリアライズする際に呼び出されるメソッドとなります。実装クラスを作成したら、後はBinaryFormatterなどのシリアライザに設定します。設定方法は以下のようになります。selector;以下、サンプルです。サンプルでは、最初にシリアライズ可能なオブジェクトを普通にシリアライズ/デシリアライズ。次に、シリアライズ不可なオブジェクトをシリアライズ/デシリアライズ。最後に、シリアル化サロゲートを利用して2番目のオブジェクトをシリアライズ/デシリアライズしています。シリアライズに関するサンプルです。シリアル化サロゲートについて。する際にシリアル化サロゲートが行われるようになる。#endregion実行結果は、以下のようになります。シリアル化可能として設定されていません。Age=983つめの実行では、ちゃんとシリアライズ/デシリアライズされています。3.0http://www.codeproject.com/Articles/32407/A-Generic-Method-for-Deep-Cloning-in-C-3-0================================過去の記事については、以下のページからご参照下さい。絡みのメモを公開しています。Blog|ブログを報告する。