Checking out Jouni Heikniemi’s excellent map of What’s new in .NET 4.5 I spotted this comment:

Methods can access call site info as parameter (CallerInfo)

Intrigued, some google-fu revealed that Anders Hejlberg demoed this in his session at build - new attributes [CallerFilePath], [CallerLineNumber] and [CallerMemberName], available for use on method parameters and automatically filled in by the compiler.

The immediate use that springs to mind is for the implementation of the INotifyPropertyChanged interface:

public string Name
{
    get { return mName; }
    set {
        if (!Equals(mName, value)) {
            mName = value;
            OnNotifyPropertyChanged();
        }
    }
}

protected void OnNotifyPropertyChanged(
    [CallerMemberName] string propertyName = "")
{
    ... 
}

Note how we no longer need to pass the name of the property as a magic string to OnNotifyPropertyChanged() because the compiler will fill it in for us.

I’m sure there’ll be more inventive uses though …

Comments

blog comments powered by Disqus
Next Post
A story about Magic  10 Dec 2011
Prior Post
NUnit to the Rescue  01 Dec 2011
Related Posts
Using Constructors  27 Feb 2023
An Inconvenient API  18 Feb 2023
Method Archetypes  11 Sep 2022
A bash puzzle, solved  02 Jul 2022
A bash puzzle  25 Jun 2022
Improve your troubleshooting by aggregating errors  11 Jun 2022
Improve your troubleshooting by wrapping errors  28 May 2022
Keep your promises  14 May 2022
When are you done?  18 Apr 2022
Fixing GitHub Authentication  28 Nov 2021
Archives
December 2011
2011