- PR -

My.Settingの保存について

1
投稿者投稿内容
TARUTO
会議室デビュー日: 2004/09/30
投稿数: 2
投稿日時: 2007-03-29 15:54
質問したい事があります。
VB.NET2005でプロジェクトからMy.Settingの項目に
Testという名前の設定をSystem.Collections.HashTable
としてユーザースコープで作成しました。

このデータを読み込む再にNothingになっていたので新しいインスタンスを作成し、中のデータをAddしてMy.Settngs.Test に代入してからMy.Settngs.Saveメソドを呼び出しました。

しかし、この設定はどうもApp.Config内には書き出されていないようです。
他のString型の設定などは正常に保存でき、Specialized.StringCollectionはXML形式で保存されています。
HashTableなどは単純には保存してくれないのでしょうか?

キーと値の組み合わせをラクに残したいのでこのまま使えないかなぁ・・と思っています。
もしご存知の方がいらっしゃいましたら、情報お教え願えませんか?

PS.ダメならダメでStringCollectionにでもキーと値をカンマ区切りで入れたりして対応しようかなと・・・
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2007-03-30 17:03
kanaiです。

回答ではありませんが、MSDNに次のような記述を見つけました。
http://msdn2.microsoft.com/ja-jp/library/8eyb2ct1(VS.80).aspx

引用:

設定のシリアル化
LocalFileSettingsProvider がディスクに設定を保存する必要がある場合、次のような処理を実行します。

リフレクションを使用して、ApplicationSettingsBase 派生クラスで定義されているすべてのプロパティを調べ、ApplicationScopedSettingAttribute または UserScopedSettingAttribute を使用して適用されたプロパティを見つけます。

プロパティをディスクにシリアル化します。まず、型に関連付けられている TypeConverter に ConvertToString または ConvertFromString を呼び出そうとします。これが成功しない場合、代わりに XML シリアル化を使用します。

設定の属性に基づいて、どの設定がどのファイルに指定されているかを判断します。



要するに、HashTableをXMLシリアル化できないので保存できないのではないかと思います。
strawman
会議室デビュー日: 2007/03/29
投稿数: 1
お住まい・勤務地: 大阪
投稿日時: 2007-03-31 15:37
ユーザー単位の設定はApp.Configじゃなくて各ユーザーの構成ファイルに書き込まれますよ。(ちなみにApp.Configは基本的に読み取り専用です)

ユーザーのLocal Settings\Application Data\[製品名]の中のどこかにuser.configってファイルがあると思うので、そっちを確認してみてください。
TARUTO
会議室デビュー日: 2004/09/30
投稿数: 2
投稿日時: 2007-04-02 10:24
ご回答ありがとうございます。

>strawman
記述忘れだったのですが、開発環境時の話です。
開発環境時はApp.ConfigのConfigulations userSettings My.Setting に
記述されていたと思っていたので、質問のように記述していました。

>kanai
やっぱりそうですか・・・
予想はしていたのですが、調べきれていなかったのでこのリンク情報はありがたかったです。
仕方ないのでとりあえずこの辺りは別途設定ファイルを保存するなり、ちょっと力技で実装するなりを相談して対応するようにしようと思います。

1

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