如何在c#中重置单例实例?

Cap*_*ono 1 c# singleton

是否有办法在用户更新数据库时强制单例实例重置?

public class Example{
      private Dictionary<int, string> _list;

      private Example(){
        _list = new Dictionary<int, string>();
        //Get data from database here and add the data to _list
      }

      private class Nested{ 
          static Nested(){}
          internal static readonly Example Instance = new Example();
      }

      public static Dictionary<int, string> GetExample(){
         return Nested.Instance._list
      }

}
Run Code Online (Sandbox Code Playgroud)

那么,我在更新数据库时重置_list?

谢谢!

jon*_*nii 7

最简洁的答案是不.

你能得到的最接近的是重置字典:

public void Reset(){ _list.Clear(); }
Run Code Online (Sandbox Code Playgroud)

现在答案很长......

你为什么使用单身人士?我认为这是因为你阅读了GoF设计模式书并认为它看起来像一个有趣的想法.单例模式打破了面向对象设计的每一个原则.你不能从它们继承,你打破封装,没有多态性的机会.

在您发布的示例中,您已将您的班级(字典)的内部工作交给任何想要它的人.如果他们改变了怎么办?这如何与线程一起使用?

如果你只想在你的应用程序中使用一个类的实例,那么只调用new一次,或者使用具有单例生活方式的依赖注入容器,但这完全是另一个主题.

呃,我讨厌单身人士.