我的目標是能夠在應用程序之間共享配置設置。 例如,我希望能夠使用WinForm應用程序來設置和保存設置,並使控制檯應用程序能夠讀取這些設置並按計劃任務運行。 我嘗試的方法是創建一個由Winform應用程序和控制檯應用程序引用的SharedSettings類。在這個類中除了像這樣的公共字符串屬性外沒有什麼。XMLSerializer在序列化類時寫入無效XML(有時)
public class SharedSettings
{
public string URL { get; set; }
public string DestUser { get; set; }
public string RelScript { get; set; }
}
我使用下面的序列化SharedSettings類
SharedSettings settings = new SharedSettings();
settings.RelScript = this.txtRelScript.Text;
settings.URL = this.txtURL.Text;
settings.DestUser = this.txtDestUser.Text;
XmlSerializer dehydrator = new XmlSerializer(settings.GetType());
System.IO.FileStream fs = new FileStream(this.configFilePath, FileMode.OpenOrCreate);
dehydrator.Serialize(fs, settings);
的情況下,這對反序列化,並在表格
SharedSettings settings = new SharedSettings();
XmlSerializer dehydrator = new XmlSerializer(settings.GetType());
System.IO.FileStream fs = new FileStream(this.configFile, FileMode.Open);
settings = (SharedSettings)dehydrator.Deserialize(fs);
this.txtRelScript.Text = settings.RelScript;
this.txtURL.Text = settings.URL;
this.DestUser.Text = settings.DestUser;
每一次的填充字段雖然可能每五次中有一次我運行它在無效XML中創建的XML文件。這裏是一個例子
<?xml version="1.0"?>
<SharedSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ProjectName>test2</ProjectName>
<URL />
<DestUser>test3</DestUser>
<RelScript>D:\Events.dll</ReleaseScript>
</SharedSettings>ttings>
注意最後一行。 ttings> 我在做課程序列化時做了什麼錯誤?
另外,OP需要在'using'語句中括住'fs'以確保文件流被刷新和關閉。 – dbc 2018-02-03 19:35:56