title: Determining the caller inside a setter -- or setting properties, silently
body: <p>Given a standard view model implementation, when a property changes, is there any way to determine the originator of the change?  In other words, in the following view model, I would like the "sender" argument of the "PropertyChanged" event to be the actual object that called the <code>Prop1</code> setter:</p>
  
  <pre><code>public class ViewModel : INotifyPropertyChanged
  {
      public double Prop1
      {
          get { return _prop1; }
          set
          {
              if (_prop1 == value)
                  return;
              _prop1 = value;
  
              // here, can I determine the sender?
              RaisePropertyChanged(propertyName: "Prop1", sender: this);
          }
      }
      private double _prop1;
  
      // TODO implement INotifyPropertyChanged
  }
  </code></pre>
  
  <p>Alternatively, is it possible to apply <code>CallerMemberNameAttribute</code> to a property setter?</p>