que parcial objetos metodos metodo ejemplos ejemplo definicion clases clase abstracta c# debugging partial-classes xsd.exe

c# - objetos - ¿Impedir que DebuggerStepThroughAttribute se aplique a mi clase parcial no generada por xsd?



public partial class definicion (2)

  1. Puede hacer que el depurador ignore este atributo en Herramientas-> Opciones-> Depurador-> General. Desmarque "Habilitar solo mi código (solo administrado)".
  2. También puede utilizar la clase parcial como un contenedor para otra clase / métodos. Los métodos en la clase parcial serían simplemente apéndices que llaman a los métodos reales en la nueva clase. El depurador omitirá el método decorado con el atributo, pero aún así le permitirá recorrer la clase que envuelven. Ejemplo abajo ...

//

[DebuggerStepThrough] static void DebuggerStepThroughInPartialClass() { WrappedClass.NonDebuggerStepThrough(); } class WrappedClass{ static void NonDebuggerStepThroughInNewClass() { int bar = 0; bar++; } }

Utilicé la herramienta xsd.exe para generar una clase basada en mi esquema xml. Creó una clase parcial pública con DebuggerStepThroughAttribute. Bueno, creé otro archivo de clase parcial para esta clase para escribir mi código personalizado y quiero poder ingresar a este código que he escrito, pero parece que el depurador también está aplicando el atributo de paso a mi clase parcial. ¿Hay una manera fácil para que pueda ingresar a mi código sin eliminar manualmente el atributo cada vez que vuelva a generar la clase parcial?


La mejor manera es simplemente eliminar las líneas de atributo del código generado. La forma más sencilla de IMHO es usar un alias en la ventana de comandos.

ejemplo:

1) Abra la ventana de comandos (CTRL + A)

2) tipo: (versión VB)

alias removenodebug Edit.Replace "(?([^/r/n])/s)*System.Diagnostics.DebuggerStepThroughAttribute/(/),/s*_/r/n(?([^/r/n])/s)*" "" /d /regex /all

3) ahora tiene un alias para buscar y reemplazar esas líneas en el documento actual. Simplemente puede escribir en la ventana de comando:

removenodebug

Y las líneas de atributo se han ido.

Nota: la expresión regular utilizada en este ejemplo es para el código VB, pero no debería ser demasiado difícil de convertir para C #.