我有少量的GUI屬性,我需要保存在我的應用程序中。 該屬性很簡單(窗口大小,窗口顏色,分機...),它們需要存儲在文件中(可以是XML或二進制文件)。在C夏普做持久性的最佳方法?
我不知道我知道什麼是寫代碼的巨星和最好的方式? 它簡單的XML或序列化?
有沒有一些例子?
謝謝。
我有少量的GUI屬性,我需要保存在我的應用程序中。 該屬性很簡單(窗口大小,窗口顏色,分機...),它們需要存儲在文件中(可以是XML或二進制文件)。在C夏普做持久性的最佳方法?
我不知道我知道什麼是寫代碼的巨星和最好的方式? 它簡單的XML或序列化?
有沒有一些例子?
謝謝。
存儲在web.config文件中的值。這裏有一個例子:
<appSettings>
<add key="size" value="100" />
編輯:既然它看起來像它的一個Windows應用程序,一個App.config文件都可以使用。
不知怎的,我懷疑如果OP是保存窗口大小和顏色,那麼他不是在談論一個Web應用程序。 – 2011-01-12 09:39:41
如果它們存儲在一個類的屬性,如Settings
你可以序列化此到磁盤(二進制或XML你的選擇)。
反序列化這個文件,以獲得您的Settings
對象返回應用程序啓動時。如果文件不存在,請創建一個新的對象並序列化默認值。
我會建議XML,因爲它是「人類可讀」,可以操縱用普通工具/視圖。
真正簡單的方法是使用DataContractSerializer。該鏈接顯示如何定義要序列化的實體以及如何輕鬆序列化它。還有ISerialiazable和XmlSerializer等等,但是爲什麼DCS很簡單呢? :-)
我會建議使用IsolatedStorage存儲應用程序運行時設置:
IsolatedStorageSettings appSettings= IsolatedStorageSettings.ApplicationSettings;
appSettings.Add(<Control.PropertyName>, <Value>);
你可以去普通的舊INI文件,用於存儲非敏感值。您可以使用Nini(http://nini.sourceforge.net/)讀取和寫入INI文件。 .NET框架不提供任何內置庫來處理INI文件。
這是存儲應用程序設置的我的首選方式,希望它有助於
public class Settings
{
public int WindowWidth { get; set; }
public int WindowHeight { get; set; }
public int FullscreenAsDefault { get; set; }
}
然後取其主類是適用於應用程序的類型:
public Settings Settings { get; set; }
public void OnOpen()
{
if (!File.Exists("Settings.xml"))
{
// init settings
this.Settings = new Settings()
{
FullscreenAsDefault = false,
WindowHeight = 500,
WindowWidth = 700
};
}
else
{
// load settings
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Settings));
Settings = xmlSerializer.Deserialize(new FileStream("Settings.xml", FileMode.Open)) as Settings;
}
}
public void OnClose()
{
// save settings
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Settings));
xmlSerializer.Serialize(new FileStream("Settings.xml", FileMode.Create), this.Settings);
}
的最佳方式是投票和接受答案。 – 2011-01-12 09:35:23