Я использую синглтона Джона Скита , используя 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";
}
}