[#RESHARPER] HowTo: Crear una plantilla para una propiedad (de esas raras que tienen el RaisePropertyChanged)

image

Buenas,

otra vez ReSharper llega a mi y me evita horas y horas de trabajo innecesario, esta vez aprovechándome de la capacidad extendida que tiene para generar plantillas.

Si utilizas mucho Visual Studio, supongo que sabrás que si escribes “prop” y presionas 2 veces la tecla TAB, pues el code snippet que viene por defecto con el IDE te crea una plantilla de una propiedad auto implementada.

image

Con esto es suficiente en la mayoría de los casos, pero cuando llegan los amigos del pinta y colorea, pues tienes que comenzar a trabajar con Dinamyc Properties (creo que se llaman así) donde tu clase debe implementar la interfaz INotifyPropertyChanged y luego disparar la notificación en el set de la propiedad.

Vamos que una forma de implementar una propiedad Name de este tipo sería algo así.

   1: #region Name

   2: [XmlIgnore] public const string NamePropertyName = "Name";

   3: [XmlIgnore] private string _name;

   4: public string Name

   5: {

   6:     get { return _name; }

   7:     set

   8:     {

   9:         _name = value;

  10:         RaisePropertyChanged(NamePropertyName);

  11:     }

  12: }

  13: #endregion

El problema viene dado cuando tienes que ir creando propiedades de este tipo de una forma rápida y te pasa lo que me pasa a mi un viernes: estás cansado (esto sirve como excusa para no pensar un poco más).

Pero por suerte, llega ReSharper con su edición de plantillas extendidas y te permite sacarte de arriba el problema como si nada.

Lo primero es acceder al panel “Templates Explorer” de ReSharper, utilizando el menu “ReSharper // Templates Explorer”. En el mismo veremos el listado de plantillas con las que podemos trabajar.

image

Para el caso que comentaba antes, he creado un nuevo template, llamado PropNot con el siguiente texto dentro del mismo

   1: #region $Name$

   2: [XmlIgnore]

   3: public const string $Name$PropertyName = "$Name$";

   4: [XmlIgnore]

   5: private $type$ _$NameLower$;

   6: public $type$ $Name$

   7: {

   8:     get { return _$NameLower$; }

   9:     set

  10:     {

  11:         _$NameLower$ = value;

  12:         RaisePropertyChanged($Name$PropertyName);

  13:     }

  14: }

  15: #endregion

Como se puede ver, dentro del mismo se implementan variables identificadas con el signo $$ y luego cada una de estas variables tiene un comportamiento especial.

– La variable $Name$ es de tipo input para definir el nombre de la propiedad

– la variable $type$ define el tipo de la propiedad y presenta la lista de tipos en el intellisense

– la variable $NameLower$ obtiene el valor de la variable $Name$ y cambia el primer caracter por lowerCase()

image

Pues listo, ahora con dos clicks ya puedo seguir con las propiedades raras estas de un tirón Risa

image

 

Saludos @ La Finca

El Bruno

image image image

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s