假設我想使用自定義類來存儲用戶設置,並使用XML序列化來保存它。
程序啓動時,它將對XML文件進行反序列化。 我現在有一個包含所有用戶設置的類。表單之間的共享類
我怎樣才能分享這個類與所有其他形式的應用程序?
有沒有比作爲參數傳遞給構造函數更好的方法?
理想情況下我會使用一個靜態類,但這並沒有實例,所以它不是序列化。
我喜歡.NET屬性文件,它可以在任何地方訪問。
(不幸的是這僅允許對,這是不夠的 - 因此,我自己的XML文件)
編輯:
基於答案我現在有這樣的:
[Serializable]
public sealed class UserSettings
{
private static readonly UserSettings _instance = new UserSettings();
private string _FirstName;
private string _LastName;
public static UserSettings Instance
{
get
{
return _instance;
}
}
static UserSettings()
{
}
private UserSettings()
{
//Constructor
}
public string FirstName
{
get { return _FirstName; }
set { _FirstName = value; }
}
public string LastName
{
get { return _LastName; }
set { _LastName = value; }
}
}
我已經序列化並將包含值的此類的實例保存到文件中。
我使用此代碼加載:
private static void LoadUserSettings()
{
UserSettings us = UserSettings.Instance;
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(_AppSettingsFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
us = (UserSettings)formatter.Deserialize(stream);
stream.Close();
//System.Windows.Forms.MessageBox.Show(us.FirstName + " " + us.LastName);
}
當我讀在LoadUserSettings功能(評論的最後一行)的屬性它顯示所保存的值。
然而,當我在運行Form_load中的代碼,該值是空的。 (其實一切都是NULL):
LoadUserSettings();
UserSettings us = UserSettings.Instance;
MessageBox.Show(us.FirstName + " " + us.LastName);
我在做什麼錯?
我喜歡它傳遞到構造函數。爲了簡化操作,請使用IOC容器(例如Unity,StructureMap等)。這將允許您保持您的代碼結構不變但自動注入值。的[分享多個形式之間的一類] – 2013-02-14 15:29:55
可能重複(http://stackoverflow.com/questions/10325040/sharing-a-class-between-multiple-forms) – 2013-02-14 15:30:02