Tag: 单例

全局类的实例

仍在努力了解C#(主要与C合作)。 我有一个类“设备”,并希望创建该类的实例,但也想全局访问实例,因为我在我的GUI方法中使用它们太多了。 public class Device { public string Name; public List models = new List(); public List revisions = new List(); … } 以某种方式在全球宣布: Device Device1 = new Device(); Device1.Name = “Device1”; 然后在WPF方法中访问它: private void DeviceViewItem_Selected(object sender, RoutedEventArgs e) { TreeViewItem selected = (TreeViewItem)sender; if (selected.Name == Device1.Name) { Device1.Models.Add(“something”); Device1.Revisions.Add(“something”); } 我一直在阅读关于单例模式,但看起来你必须创建一个单例类,但我的“设备”类被多次使用来创建许多设备。 也许我只是不明白这种模式。

unit testing单身人士

我有一个包含统计对象引用的单例。 当我对使用该单例的程序运行几个unit testing时 – 测试之间持续的值。 我虽然当我在做Program.Main()时,所有这些都是在unit testing之间重新开始,但不知怎的,它会记住上次测试的结果。 如何编写将彼此隔离的unit testing(我不想要clean()函数 – 我希望它重新开始使用新的“一切”),

Singleton的简单实现

这不是一个更简单,更安全(因此更好)的方式来实现单例而不是双重检查锁定mambo-jambo? 这种方法有什么缺点吗? public class Singleton { private static Singleton _instance; private Singleton() { Console.WriteLine(“Instance created”); } public static Singleton Instance { get { if (_instance == null) { Interlocked.CompareExchange(ref _instance, new Singleton(), null); } return _instance; } } public void DoStuff() { } } 编辑:线程安全测试失败,谁能解释为什么? 为什么Interlocked.CompareExchange不是真正的primefaces? public class Program { static void Main(string[] args) { […]

带参数的单身人士

我需要一个单例类来实例化一些参数。 我现在这样做的方式是: class SingletonExample { private SingletonExample mInstance; //other members… private SingletonExample() { } public SingletonExample Instance { get { if (mInstance == null) { throw new Exception(“Object not created”); } return mInstance; } } public void Create(string arg1, string arg2) { mInstance = new SingletonExample(); mInstance.Arg1 = arg1; mInstance.ObjectCaller = new ObjectCaller(arg2); //etc… basically, […]

DLL中的Singleton类可以跨进程共享吗?

我正在创建一个自定义.net硬件框架,其他程序员将使用它来控制某些硬件。 他们将添加对我们的DLL的引用以进入我们的硬件框架。 我需要一个可以从多个应用程序(进程)访问的共享类。 单例模式似乎是我需要的,但它只适用于进程内的多个线程。 我可能完全错了,但这里是我目前拥有的C#代码的一个例子。 我不禁觉得设计不正确。 我希望我可以分享更具体的信息,但我不能。 我必须强调,我无法控制客户应用程序。 解决方案必须包含在框架(DLL)本身内。 框架:(共享DLL) public class Resources { static readonly Resources m_instance = new Resources(); public string Data; private Resources() { Data = DateTime.Now.ToString(); } public static Resources Instance { get { return m_instance; } } } 测试应用程序:(最终客户应用程序) class Program { static void Main(string[] args) { Console.WriteLine(“Press enter to […]