2009-04-01 25 views
0

.Netオブジェクトをレジストリに格納することはできますか?C#:レジストリへの.Netオブジェクトの格納

一般的なList<>をレジストリに格納してから、それを取得してリストに戻して解析します。

これは可能ですか、それとも手動でシリアル化して逆シリアル化する必要がありますか?

[UPDATE]

掲載の答えの後、私は、オブジェクトをシリアル化し、現在のユーザーのAppDataフォルダに保存するつもりです。

答えて

6

なぜレジストリですか?

これらのシリアル化オブジェクトを格納する適切な場所は、通常、ユーザーのApplication DataフォルダまたはIsolated Storageです。もちろん、シリアライズの方法はあなた次第です。 XML、バイナリなど、それは本質的にディスク上のファイルです。

データと並行処理の必要性に応じて、「ローカルデータベース」やSQL Server Expressなどが考えられます。

アプリケーションによっては、レジストリにMost Recently Used(MRU)リストを格納するアプリケーションもありますが、これは指定されたキーのすべての値を反復するだけです。私はそのアプローチをお勧めしません。

+3

-1:これは質問に答えません –

0

あなたはそれをシリアル化する必要があります。レジストリにはプリミティブ値のみが格納されます。

0

手動でシリアル化する必要があります。

2

ええ、あなたはそれを自分でシリアル化して逆シリアル化しなければならないと思います。しかし、バイナリブロックまたはtext/xmlとして保存することができます。レジストリデータにはサイズ制限がある可能性があります。

大きな質問は「これは良いことですか?」

1

私はちょうどこれを最初に言うでしょう:これは本当に悪い考えのように聞こえます。

これを主張するなら、まずそれをシリアル化する必要があります。レジストリは.NETオブジェクトの挿入をサポートしていません。

7

可能の場合リストに含まれる型はシリアライズ可能です。その場合、シリアル化して文字列値に格納するだけで済みます。

おそらく非常に悪い考えです。レジストリはそのまま大きくなります。代わりに、ファイルシステムのAll Users Application Dataフォルダにこの種のものを入れてください。

+0

提案されたアプローチが悪い考えであった理由を追加してアップしました。 (明らかにコメントを書いているときに、式+ 1をゼロの威力で使うことは許されませんが、この場所はあまりにも肛門になりつつあります。 –

0

.NETのオブジェクトをレジストリに保存する理由がわかりません。既存の機能がBCLにあり、XML設定ファイルでこれを行うことができます。しかし、レジストリに.NETオブジェクトを保存することはもちろん可能です。オブジェクトのサイズが比較的小さい場合は、おそらくそれを実行したいだけですが、とにかく問題ではありません。私はそれを行う明らかな方法はXML Serialization(書式/空白なし)を使用し、オブジェクトをシリアル化された文字列値として格納することだと思います。

関連する問題