title: Execute function kept in the attribute upon property change
body: <p>I have a property with has an attribute, which in turn has <code>Func&lt;object, object&gt;</code>, I want that function to be executed (using the updated property's value as <code>in T</code>) upon the property change. What's the slickest way of doing so?</p>
  
  <p><strong>Note:</strong> I'm aware of the facts that Attributes are <em>static</em> and aren't designed to be executed upon their assignees change/invocaction.  I just need to get it working as close as can to the prototype I've created.</p>
  
  <p>Some code:</p>
  
  <pre><code>using System;
  using System.Windows;
  
  namespace AnnotatedBinding
  {
      public class AnnotatedPropertyAttribute: Attribute
      {
          // static 
          public AnnotatedPropertyAttribute(Func&lt;object, object&gt; evaluator)
          {
              Evaluator = evaluator;
          }
  
          public Func&lt;object, object&gt; Evaluator
          {
              get; private set;
          }
      }
  
      public class Test
      {
          [AnnotatedProperty(Test.TestEvaluator)] // not compiling!, guess it's fixable by passing in a member info and then calling Reflection Invoke?
          public string TestProperty
          {
              get; set;
          }
  
          public static Func&lt;object, object&gt; TestEvaluator = (x) =&gt; MessageBox.Show(x.ToString());
      }
  
      public class Shell
      {
          public void Run()
          {
              var test = new Test();
  
              test.TestProperty = "blah";// I want my message box here
  
              test.TestProperty = "blah";// and I don't want it here
          }
      }
  }
  </code></pre>