[VS2012] Información del llamante

Introducción:

Lo primero que poco me gustan algunas traducciones, así que vamos a llamar las cosas por su nombre, en este post vamos a hablar de una de las novedades de .NET 4.5 “Caller Information”.

Una de las cosas novedosas de esta nueva versión del Framework viene a facilitarnos la vida a la hora de realizar trace y log de errores de nuestras aplicaciones (aunque en este post vamos a ver otra utilidad de esta información).

Dentro del espacio de nombres “System.Runtime.CompilationServices” se han agregado tres atributos que van a poder ser aplicados sobre parámetros de un método:

– CallerFilePath: Va a cualificar un parámetro que almacenará el nombre del fichero que ha provocado la llamada.

– CallerLineNumber: Va a cualificar un parámetro que indicará la línea donde se encontraba la llamada al método.

– CallerMemberName: Va a cualificar un parámetro que indicará el nombre del método que contenía la llamada.

 

La aplicación de estos atributos, se realizará sobre parametros opcionales, los cuales tendrán que ser inicializados con algun valor:

 

public static  void Log([CallerFilePath]string path="",[CallerLineNumber]int line=0,[CallerMemberName] string method="")
{
//Do Actions
}

Podríamos invocar a este método desde cualquier parte de la aplicación y tendríamos la información indicada.

Os dejo un ejemplo de una aplicación de consola para que veais el funcionamiento.

Un ejemplo:

Un sitio donde puede ser interesante de utilizar es en la implementación del patrón MVVM (que tanto trabajo va a tener de cara al futuro).

Podríamos aplicarlo al definir un ViewModelBase donde se realice la implementación del evento PropertyChanged:

   1:  public class VMBase : INotifyPropertyChanged
   2:     {
   3:         public event PropertyChangedEventHandler PropertyChanged;
   4:         public void ChangeProperty([CallerMemberName]string property = "")
   5:         {
   6:             if (PropertyChanged != null)
   7:                 PropertyChanged(this, new PropertyChangedEventArgs(property));
   8:             MessageBox.Show(property);
   9:         }
  10:     }

Espero que os sea de utilidad.

Saludos!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *