我在.NET中有一組自定義的XML配置管理類。對多個XML配置文件進行序列化/反序列化
有我的應用程序兩種配置範圍:
用戶:設置適用於用戶無論她登錄到帳戶。存儲在用戶目錄中的XML配置文件中。
用戶/帳戶:該設置適用於登錄到特定帳戶時的用戶。存儲在帳戶特定子目錄下用戶目錄中的XML配置文件中。
這兩個XML文檔具有相同的結構,可以手動修改。當應用程序啓動時,我從用戶的配置文件中讀取XML配置,並從用戶/帳戶目錄中讀取XML配置。然後,我將兩個XML文檔合併到一個單獨的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個屬性的FileSettings對象 - DownloadPath和UploadPath將從該部分實例化。
這是我的問題:我不知道DownloadPath和UploadPath來自哪個配置文件(即範圍)。因此,當對象需要再次序列化時,它不知道哪個文件中包含哪些屬性。
問題:在每個屬性的基礎上存儲「源」的最佳方式是什麼,以便我可以確保將設置寫入到與讀取的配置文件相同的配置文件中?
謝謝。
這是我最初的想法。我打算做 C:\ path DownloadPath>。但是我不確定如何在對象反序列化時將它表示出來。我想避免爲對象中的每個屬性都設置相應的源屬性。 –
2009-02-23 16:36:55