有没有一种方法可以测试Singleton是否被实例化了多次

时间:2020-01-22 04:39:29

标签: c# .net singleton

我正在尝试在C#中测试我的单例对象,但是对我如何用蛮力实例化该对象(使用并行foreach)感到不满意。

是否有正确的方法/更好的方法进行测试?

2 个答案:

答案 0 :(得分:0)

我不明白您对“ parallel foreach”的意思。单例实现如下:

public class MyClass
{
    private static MyClass _instance;

    private MyClass()
    {
        //Do Stuff
    }

    public static MyClass GetInstance()
    {
         if(_instance == null)
             _instance = new MyClass();

         return _instance;
    }
}

另一种方法,而不是方法是属性:

private static readonly object LockObject = new object();
private static MyClass _instance;

public static MyClass Instance
{
    get
    {
        lock (LockObject)
        {
            return _instance ?? (_instance = new MyClass());
        }
    }
}

尽管我更喜欢第一种方法,因为它更易于实现,即使对于初学者来说,该属性也是一种好方法

答案 1 :(得分:-1)

Singleton类只能有一个实例,如果多次初始化,则意味着您没有正确实现Singleton Design。

您可以检查instance.Hashcode()值,无论您在使用那个Singleton类的实例时,该值都必须保持不变。