środa, 31 października 2007

Ciekawy ficzer Visual Studio 2005

Implementuję sobie klasę, która ma być singletonem. I chciałem się debuggerm podpiąć pod jej (oczywiście prywatny) konstruktor.


I mam wywołanie w taki sposób:
Klasa.Instance.Metoda();
I wiem, że to jest pierwsze (a wręcz jedyne) użycie tej klasy.

Debugger stoi tuż przed tym wywołaniem. I F11. I nic - jesteśmy już za konstruktorem.
I tak się męczę przez pół godziny, ustawiając nowe breakpointy, nowe Debugger.Break(). I nic.

Co się okazało?
Należało zamknąć okienko Autos. Bo Visual Studio, aby wyświetlić w tym okienku informacje o Klasa.Instance musiał wykonać get tej właściwości, przez co wywoływał ten prywatny konstruktor.

Myślałem, że nawet jeżeli VS tak robi, to złapie breakpointa w tym konstruktorze. A tu niespodzianka...

1 komentarz:

  1. Niestety ten "ficzer" mnie już dłuższy czas prześladuje. Co więcej, jest powodem dla którego coraz bardziej zgadzam się z opiniom Jeffrey'a Richter'a (CLR via C#), że propertisy są be. Gdyby tak zamiast Instance było getInstance() to by problemu nie było...

    OdpowiedzUsuń