AOP ServicedComponents!

For those attending my talks at the Microsoft Strategic Architect's Forum in South Africa next week (that's an "by invite only" event), I am very happy to announce that I am going to be demonstrating, for the first time, a stable version of my brand-new AOP extensions for Enterprise Services. It's an extensible framework that allows writing custom, managed attributes, which are invoked from within the server-side context and allow interception and inspection at the class, interface, method, property, field and argument level. 

The example below illustrates the functionality using a set of validation attributes, but there's significantly more you could do. I will have to do quite a bit of documentation work before I can make this available, but there will be downloadable bits for everyone to play with within the next couple of weeks.

   [Transaction]
   public class Component : newtelligence.EnterpriseServices.AspectServicedComponent
   {
      private string val = "";

      public Component()
      {
      }

      [Match("[A-Z]*")]
      public string SetMeGetMe
      {
         get { return val; }
         set { val = value; }
      }

       [GreaterEqualTo(0)]
      public int TestField;

       [return: MinLength(1)]
      public string Hello( [MinLength(1),MaxLength(20)] string Name,
                          [Between(1,100)] int Age,
                          [MinLength(1)] out string retString,
                          [LaterThanToday] DateTime when)
      {
           return "Test";
      }
   }

Updated: