2011-01-12 57 views
0

我有少量的GUI屬性,我需要保存在我的應用程序中。 該屬性很簡單(窗口大小,窗口顏色,分機...),它們需要存儲在文件中(可以是XML或二進制文件)。在C夏普做持久性的最佳方法?

我不知道我知道什麼是寫代碼的巨星和最好的方式? 它簡單的XML或序列化?

有沒有一些例子?

謝謝。

+2

的最佳方式是投票和接受答案。 – 2011-01-12 09:35:23

回答

2

存儲在web.config文件中的值。這裏有一個例子:

<appSettings> 
    <add key="size" value="100" /> 

編輯:既然它看起來像它的一個Windows應用程序,一個App.config文件都可以使用。

+0

不知怎的,我懷疑如果OP是保存窗口大小和顏色,那麼他不是在談論一個Web應用程序。 – 2011-01-12 09:39:41

1

如果它們存儲在一個類的屬性,如Settings你可以序列化此到磁盤(二進制或XML你的選擇)。

反序列化這個文件,以獲得您的Settings對象返回應用程序啓動時。如果文件不存在,請創建一個新的對象並序列化默認值。

1

我會建議XML,因爲它是「人類可讀」,可以操縱用普通工具/視圖。

真正簡單的方法是使用DataContractSerializer。該鏈接顯示如何定義要序列化的實體以及如何輕鬆序列化它。還有ISerialiazableXmlSerializer等等,但是爲什麼DCS很簡單呢? :-)

2

我會建議使用IsolatedStorage存儲應用程序運行時設置:

IsolatedStorageSettings appSettings= IsolatedStorageSettings.ApplicationSettings; 
appSettings.Add(<Control.PropertyName>, <Value>); 
0

你可以去普通的舊INI文件,用於存儲非敏感值。您可以使用Nini(http://nini.sourceforge.net/)讀取和寫入INI文件。 .NET框架不提供任何內置庫來處理INI文件。

2

這是存儲應用程序設置的我的首選方式,希望它有助於

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); 
    }