Есть ли способ проверить, был ли экземпляр Singleton получен несколько раз? - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь проверить мой одноэлементный объект в C#, но почему-то не удовлетворен тем, как я грубо насилую экземпляр объекта (используя параллельный foreach).

Есть ли правильный / лучший способ проверить это?

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Я не понимаю, что вы имеете в виду под "параллельным 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());
        }
    }
}

Хотя я предпочитаю первый метод, потому что его гораздо проще реализовать, даже для новичков собственность также является хорошим способом

0 голосов
/ 22 января 2020

Класс Singleton может иметь только один экземпляр. Если он инициализируется несколько раз, это означает, что вы неправильно реализовали дизайн Singleton.

Вы можете проверить значение instance.Hashcode (), оно должно остаться прежним где бы вы ни использовали экземпляр этого класса Singleton.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...