Inserting Delegate Stubs in VS2012 (CS)

From Ribbon Commander Documentation
Revision as of 17:07, 15 March 2013 by Rxdff15551 bb53 (Talk | contribs) (Example)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Introduction

In Visual Studio 2012, you can automatically insert delegate stubs based on their signature in C#.

Example

Consider the simple example below:

  1. class SubscribeToDelegates
  2. {
  3.     rxCustomUI _customUI;
  4.  
  5.     public SubscribeToDelegates()
  6.     {
  7.         // Create a new customUI obj
  8.         _customUI = rxCustomUI.create("my_test_ctx");
  9.  
  10.         // Create a new button
  11.         rxButton myButton = new rxButton();
  12.  
  13.         // Create a new delegate of the correct signature
  14.         // NOTE1: We use class rxButtonDelegates to conveniently get the desired delegate type
  15.         // NOTE2: The delegate stub hasn't been provided at this point
  16.         var myDel = new rxButtonDelegates.onAction(MyOnAction);
  17.  
  18.         // Subscribe to the button's onAction delegate
  19.         myButton.onAction = _customUI.make_delegate(myDel);
  20.  
  21.     }
  22. }
  • Note1: At this point we haven't yet provided the delegate stub, so intellisense marks myOnAction with red squiggles:
    MyOnActionRedSquiggles.png
  • Note2: When clicking inside MyOnAction, intellisense provides us with the option to insert the delegate stub automatically:
    InsertDelegateStubCS.png

The class now becomes:

  1. class SubscribeToDelegates
  2. {
  3.     rxCustomUI _customUI;
  4.  
  5.     public SubscribeToDelegates()
  6.     {
  7.         // Create a new customUI obj
  8.         _customUI = rxCustomUI.create("my_test_ctx");
  9.  
  10.         // Create a new button
  11.         rxButton myButton = new rxButton();
  12.  
  13.         // Create a new delegate of the correct signature
  14.         // NOTE1: We use class rxButtonDelegates to conveniently get the desired delegate type
  15.         // NOTE2: The delegate stub hasn't been provided at this point
  16.         var myDel = new rxButtonDelegates.onAction(MyOnAction);
  17.  
  18.         // Subscribe to the button's onAction delegate
  19.         myButton.onAction = _customUI.make_delegate(myDel);
  20.  
  21.     }
  22.  
  23.     private void MyOnAction(IRibbonControl control)
  24.     {
  25.         throw new NotImplementedException();
  26.     }
  27. }