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