Проверка дополнительных статических свойств на ленивом синглтоне (Jon Skeet singleton) - PullRequest
0 голосов
/ 28 мая 2018

Я использую синглтона Джона Скита , используя System.Lazy<T>.

Мой синглтон немного отличается.Мой одноэлементный класс представляет конфигурацию одного из моих сервисов, и этот сервис имеет соединение с базой данных.У меня есть дополнительное статическое свойство только для чтения, которое возвращает true, если моя служба отключена.

Я сделал это, сначала проверив свойство IsValueCreated ленивого объекта и вызвав Value, если оно не былосоздан для того, чтобы при проверке моего свойства ConnectionString был создан экземпляр моего синглтона.

Есть ли более элегантный способ реализации Disconnected?Безопасен ли отключенный поток в этой текущей реализации (без lock s)?Любое понимание будет с благодарностью.

Пример кода ниже:

    public sealed class MyServiceConfiguration {
        private static Lazy<MyServiceConfiguration> lazy = new Lazy<MyServiceConfiguration>(() => new MyServiceConfiguration());

        private static string ConnectionString = "";

        public static MyServiceConfiguration Instance { get { return lazy.Value; } }

        public static bool Disconnected {
            get {
                if (!lazy.IsValueCreated) { lazy.Value; }
                return ConnectionString == "";
            }
        }

        private MyServiceConfiguration() {
            //...additional service configuration options...
            ConnectionString = "someConnectionString";
        }
    }
...