.NETに一連のカスタムXML構成管理クラスがあります。
私のアプリケーションには2つの構成スコープがあります。
ユーザー:この設定は、ユーザーがログインしているアカウントに関係なく、ユーザーに適用されます。ユーザーのディレクトリのXML構成ファイルに保存されます。
ユーザー/アカウント:この設定は、特定のアカウントにログインしたときにユーザーに適用されます。アカウント固有のサブディレクトリの下にあるユーザーのディレクトリのXML構成ファイルに保存されます。
2つのXMLドキュメントは同じ構造であり、手動で変更できます。アプリケーションが起動したら、ユーザーのプロファイルからXML構成を読み取り、ユーザー/アカウントディレクトリからXML構成を読み取ります。次に、2つのXMLドキュメントを1つのXDocumentにマージしてから、XMLをXDocumentのセクションをモデルにしたオブジェクトに逆シリアル化します。ユーザー/アカウントレベルの設定が存在する場合は、ユーザーレベルの設定を上書きする必要があります。例:
ユーザーファイル:
<FileSettings>
<DownloadPath>C:\downloads</DownloadPath>
<UploadPath>C:\uploads</UploadPath>
</FileSettings>
アカウントXYZのユーザー/アカウントファイル:
<FileSettings>
<DownloadPath>C:\newlocation\xyz\mystuff</DownloadPath>
</FileSettings>
マージ後の結果:
<FileSettings>
<DownloadPath>C:\newlocation\xyz\mystuff</DownloadPath>
<UploadPath>C:\uploads</UploadPath>
</FileSettings>
上記の例では、2つのプロパティ(DownloadPathとUploadPath)を持つFileSettingsオブジェクトがセクションからインスタンス化されます。
これが私の問題です: DownloadPathとUploadPathがどの構成ファイル(つまりスコープ)から来たのかわかりません。その結果、オブジェクトを再度シリアル化する必要がある場合、どのプロパティがどのファイルに含まれるかがわかりません。
質問:「ソース」をプロパティごとに保存して、設定が読み取られたのと同じ構成ファイルに確実に書き込まれるようにするための最良の方法は何ですか?
ありがとう。