如何保存/加载单例类
本文关键字:加载 单例类 保存 何保存 | 更新日期: 2023-09-27 18:18:21
我在我的。net CF应用程序中有配置实体,我想为此使用单例。配置可以更改,必须保存/恢复下次应用程序启动。我想使用xml序列化/反序列化,它还提供了在xml文件上更改配置的可能性。问题是如何保存和恢复单例?反序列化创建了一个单例类的新实例,但这意味着此时它将是该单例类的两个实例。
我已经找到了isserializable接口的解决方案,但它似乎不工作与紧凑的框架http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable%28v=VS.90%29.aspx
是否有任何方法可以获得与。net CF相同的行为?
你的单例模式很可能使用了私有构造函数。所以你可以这样做:
public class MySingleton
{
private static MySingleton m_instance;
private MySingleton() { }
public static MySingleton Instance
{
get
{
if(m_instance == null)
{
// hydrate m_instance from serialized version
}
return m_instance;
}
}
}
或:
public class MySingleton
{
private static MySingleton m_instance;
private MySingleton()
{
// load data from config file
}
public static MySingleton Instance
{
get
{
if(m_instance == null)
{
m_instance = new MySingleton();
}
return m_instance;
}
}
}