Рассмотрим типичный одноэлементный класс
public class Singleton{
private static Singleton _instance;
private static Singleton ThisInstance {
get => _instance;
set => _instance = value;
}
public static Instance()
{
lock(_lockThis) {
return ThisInstance ?? (ThisInstance = new Singleton());
}
}
private Singleton(){}
public bool Field1 { get; set; }
public int Field2 { get; set; }
...
}
Проблема в том, что я пытаюсь отладить что-нибудь простое, например, предикат команды:
public bool CommandPredicate(object obj){
return Singleton.Instance().Field1 == true &&
Singleton.Instance().Field2 > 10;
}
Значения Поле1 и Field2 следуют после Instance () , поэтому они невидимы. При наведении курсора на эти поля ничего не происходит.
Единственный способ, который я нашел, - это присвоить Instance переменной, например:
public bool CommandPredicate(object obj){
var a = Singleton.Instance();
return a.Field1 == true &&
a.Field2 > 10;
}
Тогда вы можете увидеть все значения a в отладчике.
Существует ли какой-либо стандартный и элегантный подход для просмотра одноэлементных полей?