如何保存/加载单例类

本文关键字:加载 单例类 保存 何保存 | 更新日期: 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; 
        }
    }
}