Depuración de propiedades automáticas


126

¿Hay alguna forma de establecer un punto de interrupción en setter / getter en la propiedad implementada automáticamente?

int Counter { get; set; }

Aparte de cambiarlo a propiedad estándar (lo estoy haciendo de esta manera, pero para hacerlo tengo que cambiar y recompilar todo el proyecto)


2
¿Con qué IDE estás trabajando? ¿Estudio visual? (Sugiero agregar una etiqueta correspondiente a su pregunta, ya que este es en realidad más relacionado con un IDE en particular que a la de C # sí mismo idioma.)
stakx - ya no contribuye

55
@stakx en el mundo .NET tenemos un IDE predeterminado :)
Stilgar

1
@Stilgar, soy consciente de eso, estoy usando VS, después de todo. Pero "predeterminado" no significa que sea el único, ni que todos lo usen. Como se trata de una pregunta IDE, es importante saber qué IDE estamos viendo aquí. De ahí mi comentario anterior.
stakx: ya no contribuye el

44
@stakx bien, cuando no se menciona el IDE para una pregunta relacionada con .NET, se supone que es VS. Es más, estaba bromeando :) :)
Stilgar

Respuestas:


220

Usando Visual Studio 2008, 2010, 2012, 2013:

  1. Ir a la ventana de punto de interrupción
  2. Nuevo -> Descanso en la función ...
  3. Para el get, escriba:ClassName.get_Counter()

    Para el set, escriba:ClassName.set_Counter(int)

Obtendrá un "No hay fuente disponible" cuando se alcanza el punto de interrupción, pero obtendrá la ubicación de la llamada en la pila de llamadas.

Encontré esta solución aquí en MSDN


Brillante. Gracias. Ya no necesito cambiar las propiedades automáticas a una estándar (con campo). Y no más recompilación :)
Marek Kwiendacz

9
Esto también funciona para constructores predeterminados. usoClassName.ctor
Călin Darie


1
No funciona aqui. Probé los dos Form.set_Heighty MainWindow.set_Heightninguno funcionó.
Hola Ángel

@ Hola, Angel, ten en cuenta que para los setters, debes incluir el tipo, así que algo como Form.set_Height (int)
Matt Smith

7

Si fuera usted, convertiría temporalmente la propiedad en una propiedad estándar respaldada por un campo interno ... establezca sus puntos de interrupción y luego podrá volver a cambiarla.



3

En Visual Studio 2017:

Desplácese sobre la palabra "set" -> haga clic derecho -> Punto de interrupción -> Insertar punto de interrupción

Antes de:

antes de

Después:

Después


0

Establezca los puntos de interrupción donde está estableciendo la propiedad u obteniendo propiedad, de ninguna otra manera.

puede hacerlo mediante las opciones Buscar todas las referencias

Y dado que solo está almacenando valores y no tiene ningún código en la parte del setter, ¿qué depura?


3
sí, pero ¿qué sucede cuando lo usa, por ejemplo, en 20 lugares? Y cada nuevo punto de interrupción ralentiza el proceso de depuración. O bien, ¿qué sucede si el acceso a la propiedad se realiza mediante framework (por ejemplo, serialización)?
Marek Kwiendacz

1
Puntos de ruptura condicionales. Ponga el punto de ruptura, haga clic derecho y asígnele una condición ...
Phill
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.