[#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
About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s