Daily Archives: 2012.03.1. 10:47

C# 5.0 caller info attributes és INotifyPropertyChanged

A C# 5.0-ban lesz néhány új nyelvi elem, melyek közül az egyik a “caller info attributes. Egyszerűen fogalmazva arról van szó, hogy ha egy metódus bemeneti paramétereit ellátjuk néhány attribútummal, akkor azok a paraméterek futási időben meg fogják kapni a hívó függvény nevét, valamint annak a fájlnak a teljes elérési útját és azon belül a sor számát, ahol a hívó található. Az attribútumok:

[CallerMemberName]

[CallerFilePath]

[CallerLineNumber]

A legtöbb felhasználási példa arról szól, hogy ezek az attribútumok milyen kiválóan használhatók naplózásra, de használhatjuk őket például az INotifyPropertyChanged interfész implementálásakor is:

public class Widget : INotifyPropertyChanged
{
    private string statusText;
    public string StatusText
    {
        get { return statusText; }
        set { statusText = value; NotifyPropertyChanged(); }
    }

    public void NotifyPropertyChanged([CallerMemberName] string property = null)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
 
   public event PropertyChangedEventHandler PropertyChanged;
}

A példát a C# FAQ blogból kölcsönöztem, ahol további linkek találhatóak a C# 5.0-val és a Visual Studio 11 Bétával kapcsolatban.

 

Technorati-címkék: ,
Advertisements