假设我想使用自定义类来存储用户设置,并使用 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);
我究竟做错了什么?