これが私がやりたいことです:
- 値がカスタムタイプの配列であるアプリケーションスコープの設定を設定する
- 文字列ではなく、カスタムタイプの配列をXMLにシリアル化する
- 設定のシリアル化された値をapp.configに保存します。
これまでのところ、これは私を避けています。
私はカスタムタイプを持っています:
[TypeConverter(typeof(ServiceConfigurationConverter))]
[Serializable]
public class ServiceConfiguration
{
public string Name { get; set; }
public string Url { get; set; }
// more
}
文字列から前後に変換するカスタムTypeConverterがあります。私が見つけた例はすべて文字列に変換するためのものであり、値がapp.configに保存されていることを意味する場合は文字列にシリアル化することをいとわないため、このように記述しました。しかし、これから見ていくように、そうではありません。
この設定のタイプがであると(Settings.settingsファイルを直接編集して)指定するとMyNamespace.ServiceConfiguration[]
、配列を表すためにXMLを手動で入力できます。(プログラムで配列を作成し、それを使用してシリアル化するテストを記述してXMLを取得しましたXmlSerializer
。)ただし、このXMLはSettings.designer.csで設定のデフォルト値として設定されますが、アプリには保存されません。 .config。
そして、それは問題です。なぜなら、app.configでXML形式のプロパティ値を表示し、必要に応じて変更できるようにするためです。app.configからの書き込みと読み取りが行われていない場合、実行時に構成することはできません。
app.configの、の下に手動でエントリを作成applicationSettings
し、シリアル化された配列に設定値として入力すると、設定デザイナは設定ファイルの値を更新するかどうかを尋ねてきますが、更新すると、入力したエントリが削除されます。下にapplicationSettings
。
必要に応じて、カスタムタイプのデザイナーを作成することを検討したいと思いますが、それがどのようなデザイナーになるかはわかりません。
(プロパティタイプを「文字列」に変更しただけで、シリアル化されたXMLを文字列として保存し、この問題全体を回避できることはわかっています。しかし、必要なのは、タイプがカスタムタイプであり、カスタムタイプではないプロパティです。再構成します。)
この投稿の上部にあるカスタムタイプで3つの目標を達成する方法を教えてもらえますか?
どうもありがとう。