Как сломаться внутри геттера или сеттера С# по умолчанию?

Я что-то отлаживаю, и мне нужно знать, когда что-то устанавливается. Кажется, нет явного набора, как в x = 5. Так нужно ли в любом случае убедиться, что он не устанавливается? В частности, взломав установщик по умолчанию?

Если вопрос был недостаточно ясен:

public FooClass
{ 

    FooClass() { }

    public int x { get; set; } //How do I break in the setting of this property?

}

Спасибо


person gordlonious    schedule 28.01.2014    source источник
comment
Вы пробовали щелкнуть правой кнопкой мыши строку свойства и установить там точку останова?   -  person Tim    schedule 28.01.2014
comment
Да и не бьет. Однако это может быть связано с тем, что он просто не устанавливается. Если, конечно, вы не знаете, что установка точки останова на этой строке должна работать.   -  person gordlonious    schedule 28.01.2014
comment
Инструкции можно найти в этом потоке.   -  person Andrei    schedule 28.01.2014


Ответы (2)


Вы можете принудительно заставить отладчик сломаться:

using System.Diagnostics;

Debugger.Break();

Возможно, вам придется расширить свое свойство auto с помощью явного поля поддержки:

public class FooClass {
    private int _x;

    public int X {
        get {
            return _x;
        }
        set {
            _x = value;
            Debugger.Break();
        }
    }
}

.. или просто разверните свойство (как указано выше) и поставьте там точку останова самостоятельно.

person Simon Whitehead    schedule 28.01.2014

Если внутри вашего геттера или сеттера есть код, вы можете сломать его, чтобы создать частный член для свойства.

private int _x;
public int X {
    get { 
        return _x;
    }
    set {
        _x = value;
    }
}

Это позволит вам поместить разрывы в строки return _x и _x = value.

person Neil Smith    schedule 28.01.2014
comment
Идеально! Не знаю, почему я не подумал об этом! - person gordlonious; 28.01.2014