System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 75c68d740112cc557032a3534ece4ddad58d455a:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 41 44 4f  *********. * ADO
0040: 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50 72  .NET 2.0 Data Pr
0050: 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69 74  ovider for SQLit
0060: 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0a 20 2a  e Version 3.X. *
0070: 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f 62 65   Written by Robe
0080: 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f 62 65  rt Simpson (robe
0090: 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65 73 6f  rt@blackcastleso
00a0: 66 74 2e 63 6f 6d 29 0a 20 2a 0a 20 2a 20 52 65  ft.com). *. * Re
00b0: 6c 65 61 73 65 64 20 74 6f 20 74 68 65 20 70 75  leased to the pu
00c0: 62 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73 65  blic domain, use
00d0: 20 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69 73   at your own ris
00e0: 6b 21 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  k!. ************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 6e  ************/..n
0120: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0130: 44 61 74 61 2e 53 51 4c 69 74 65 0a 7b 0a 20 20  Data.SQLite.{.  
0140: 75 73 69 6e 67 20 53 79 73 74 65 6d 3b 0a 0a 20  using System;.. 
0150: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a 20   /// <summary>. 
0160: 20 2f 2f 2f 20 41 20 73 69 6d 70 6c 65 20 63 75   /// A simple cu
0170: 73 74 6f 6d 20 61 74 74 72 69 62 75 74 65 20 74  stom attribute t
0180: 6f 20 65 6e 61 62 6c 65 20 75 73 20 74 6f 20 65  o enable us to e
0190: 61 73 69 6c 79 20 66 69 6e 64 20 75 73 65 72 2d  asily find user-
01a0: 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
01b0: 73 20 69 6e 0a 20 20 2f 2f 2f 20 74 68 65 20 6c  s in.  /// the l
01c0: 6f 61 64 65 64 20 61 73 73 65 6d 62 6c 69 65 73  oaded assemblies
01d0: 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20   and initialize 
01e0: 74 68 65 6d 20 69 6e 20 53 51 4c 69 74 65 20 61  them in SQLite a
01f0: 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 72  s connections ar
0200: 65 20 6d 61 64 65 2e 0a 20 20 2f 2f 2f 20 3c 2f  e made..  /// </
0210: 73 75 6d 6d 61 72 79 3e 0a 20 20 5b 41 74 74 72  summary>.  [Attr
0220: 69 62 75 74 65 55 73 61 67 65 28 41 74 74 72 69  ibuteUsage(Attri
0230: 62 75 74 65 54 61 72 67 65 74 73 2e 43 6c 61 73  buteTargets.Clas
0240: 73 2c 20 49 6e 68 65 72 69 74 65 64 20 3d 20 66  s, Inherited = f
0250: 61 6c 73 65 2c 20 41 6c 6c 6f 77 4d 75 6c 74 69  alse, AllowMulti
0260: 70 6c 65 20 3d 20 74 72 75 65 29 5d 0a 20 20 70  ple = true)].  p
0270: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61  ublic sealed cla
0280: 73 73 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  ss SQLiteFunctio
0290: 6e 41 74 74 72 69 62 75 74 65 20 3a 20 41 74 74  nAttribute : Att
02a0: 72 69 62 75 74 65 0a 20 20 7b 0a 20 20 20 20 70  ribute.  {.    p
02b0: 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 20 20  rivate string   
02c0: 20 20 20 20 5f 6e 61 6d 65 3b 0a 20 20 20 20 70      _name;.    p
02d0: 72 69 76 61 74 65 20 69 6e 74 20 20 20 20 20 20  rivate int      
02e0: 20 20 20 20 5f 61 72 67 75 6d 65 6e 74 43 6f 75      _argumentCou
02f0: 6e 74 3b 0a 20 20 20 20 70 72 69 76 61 74 65 20  nt;.    private 
0300: 46 75 6e 63 74 69 6f 6e 54 79 70 65 20 5f 66 75  FunctionType _fu
0310: 6e 63 74 69 6f 6e 54 79 70 65 3b 0a 20 20 20 20  nctionType;.    
0320: 70 72 69 76 61 74 65 20 54 79 70 65 20 20 20 20  private Type    
0330: 20 20 20 20 20 5f 69 6e 73 74 61 6e 63 65 54 79       _instanceTy
0340: 70 65 3b 0a 20 20 20 20 70 72 69 76 61 74 65 20  pe;.    private 
0350: 44 65 6c 65 67 61 74 65 20 20 20 20 20 5f 63 61  Delegate     _ca
0360: 6c 6c 62 61 63 6b 31 3b 0a 20 20 20 20 70 72 69  llback1;.    pri
0370: 76 61 74 65 20 44 65 6c 65 67 61 74 65 20 20 20  vate Delegate   
0380: 20 20 5f 63 61 6c 6c 62 61 63 6b 32 3b 0a 0a 20    _callback2;.. 
0390: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
03a0: 0a 20 20 20 20 2f 2f 2f 20 44 65 66 61 75 6c 74  .    /// Default
03b0: 20 63 6f 6e 73 74 72 75 63 74 6f 72 2c 20 69 6e   constructor, in
03c0: 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 69 6e  itializes the in
03d0: 74 65 72 6e 61 6c 20 76 61 72 69 61 62 6c 65 73  ternal variables
03e0: 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69 6f   for the functio
03f0: 6e 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  n..    /// </sum
0400: 6d 61 72 79 3e 0a 20 20 20 20 70 75 62 6c 69 63  mary>.    public
0410: 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 41   SQLiteFunctionA
0420: 74 74 72 69 62 75 74 65 28 29 0a 20 20 20 20 20  ttribute().     
0430: 20 20 20 3a 20 74 68 69 73 28 6e 75 6c 6c 2c 20     : this(null, 
0440: 2d 31 2c 20 46 75 6e 63 74 69 6f 6e 54 79 70 65  -1, FunctionType
0450: 2e 53 63 61 6c 61 72 29 0a 20 20 20 20 7b 0a 20  .Scalar).    {. 
0460: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
0470: 68 69 6e 67 2e 0a 20 20 20 20 7d 0a 0a 20 20 20  hing..    }..   
0480: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a 20   /// <summary>. 
0490: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
04a0: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
04b0: 20 74 68 69 73 20 63 6c 61 73 73 2e 20 20 54 68   this class.  Th
04c0: 69 73 20 73 65 74 73 20 74 68 65 20 69 6e 69 74  is sets the init
04d0: 69 61 6c 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ial.    /// <see
04e0: 20 63 72 65 66 3d 22 49 6e 73 74 61 6e 63 65 54   cref="InstanceT
04f0: 79 70 65 22 20 2f 3e 2c 20 3c 73 65 65 20 63 72  ype" />, <see cr
0500: 65 66 3d 22 43 61 6c 6c 62 61 63 6b 31 22 20 2f  ef="Callback1" /
0510: 3e 2c 20 61 6e 64 0a 20 20 20 20 2f 2f 2f 20 3c  >, and.    /// <
0520: 73 65 65 20 63 72 65 66 3d 22 43 61 6c 6c 62 61  see cref="Callba
0530: 63 6b 32 22 20 2f 3e 20 70 72 6f 70 65 72 74 69  ck2" /> properti
0540: 65 73 20 74 6f 20 6e 75 6c 6c 2e 0a 20 20 20 20  es to null..    
0550: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 20  /// </summary>. 
0560: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
0570: 6d 65 3d 22 6e 61 6d 65 22 3e 0a 20 20 20 20 2f  me="name">.    /
0580: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
0590: 68 65 20 66 75 6e 63 74 69 6f 6e 2c 20 61 73 20  he function, as 
05a0: 73 65 65 6e 20 62 79 20 74 68 65 20 53 51 4c 69  seen by the SQLi
05b0: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
05c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
05d0: 3e 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  >.    /// <param
05e0: 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43   name="argumentC
05f0: 6f 75 6e 74 22 3e 0a 20 20 20 20 2f 2f 2f 20 54  ount">.    /// T
0600: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
0610: 75 6d 65 6e 74 73 20 74 68 61 74 20 74 68 65 20  uments that the 
0620: 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 61 63  function will ac
0630: 63 65 70 74 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f  cept..    /// </
0640: 70 61 72 61 6d 3e 0a 20 20 20 20 2f 2f 2f 20 3c  param>.    /// <
0650: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63  param name="func
0660: 74 69 6f 6e 54 79 70 65 22 3e 0a 20 20 20 20 2f  tionType">.    /
0670: 2f 2f 20 54 68 65 20 74 79 70 65 20 6f 66 20 66  // The type of f
0680: 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 64 65  unction being de
0690: 63 6c 61 72 65 64 2e 20 20 54 68 69 73 20 77 69  clared.  This wi
06a0: 6c 6c 20 65 69 74 68 65 72 20 62 65 20 53 63 61  ll either be Sca
06b0: 6c 61 72 2c 0a 20 20 20 20 2f 2f 2f 20 41 67 67  lar,.    /// Agg
06c0: 72 65 67 61 74 65 2c 20 6f 72 20 43 6f 6c 6c 61  regate, or Colla
06d0: 74 69 6f 6e 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tion..    /// </
06e0: 70 61 72 61 6d 3e 0a 20 20 20 20 70 75 62 6c 69  param>.    publi
06f0: 63 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  c SQLiteFunction
0700: 41 74 74 72 69 62 75 74 65 28 0a 20 20 20 20 20  Attribute(.     
0710: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0a     string name,.
0720: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 75          int argu
0730: 6d 65 6e 74 43 6f 75 6e 74 2c 0a 20 20 20 20 20  mentCount,.     
0740: 20 20 20 46 75 6e 63 74 69 6f 6e 54 79 70 65 20     FunctionType 
0750: 66 75 6e 63 74 69 6f 6e 54 79 70 65 0a 20 20 20  functionType.   
0760: 20 20 20 20 20 29 0a 20 20 20 20 7b 0a 20 20 20       ).    {.   
0770: 20 20 20 20 20 5f 6e 61 6d 65 20 3d 20 6e 61 6d       _name = nam
0780: 65 3b 0a 20 20 20 20 20 20 20 20 5f 61 72 67 75  e;.        _argu
0790: 6d 65 6e 74 43 6f 75 6e 74 20 3d 20 61 72 67 75  mentCount = argu
07a0: 6d 65 6e 74 43 6f 75 6e 74 3b 0a 20 20 20 20 20  mentCount;.     
07b0: 20 20 20 5f 66 75 6e 63 74 69 6f 6e 54 79 70 65     _functionType
07c0: 20 3d 20 66 75 6e 63 74 69 6f 6e 54 79 70 65 3b   = functionType;
07d0: 0a 20 20 20 20 20 20 20 20 5f 69 6e 73 74 61 6e  .        _instan
07e0: 63 65 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0a 20  ceType = null;. 
07f0: 20 20 20 20 20 20 20 5f 63 61 6c 6c 62 61 63 6b         _callback
0800: 31 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20  1 = null;.      
0810: 20 20 5f 63 61 6c 6c 62 61 63 6b 32 20 3d 20 6e    _callback2 = n
0820: 75 6c 6c 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ull;.    }..    
0830: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a 20 20  /// <summary>.  
0840: 20 20 2f 2f 2f 20 54 68 65 20 66 75 6e 63 74 69    /// The functi
0850: 6f 6e 27 73 20 6e 61 6d 65 20 61 73 20 69 74 20  on's name as it 
0860: 77 69 6c 6c 20 62 65 20 75 73 65 64 20 69 6e 20  will be used in 
0870: 53 51 4c 69 74 65 20 63 6f 6d 6d 61 6e 64 20 74  SQLite command t
0880: 65 78 74 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ext..    /// </s
0890: 75 6d 6d 61 72 79 3e 0a 20 20 20 20 70 75 62 6c  ummary>.    publ
08a0: 69 63 20 73 74 72 69 6e 67 20 4e 61 6d 65 0a 20  ic string Name. 
08b0: 20 20 20 7b 0a 20 20 20 20 20 20 67 65 74 20 7b     {.      get {
08c0: 20 72 65 74 75 72 6e 20 5f 6e 61 6d 65 3b 20 7d   return _name; }
08d0: 0a 20 20 20 20 20 20 73 65 74 20 7b 20 5f 6e 61  .      set { _na
08e0: 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0a 20 20  me = value; }.  
08f0: 20 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    }..    /// <su
0900: 6d 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 54  mmary>.    /// T
0910: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
0920: 75 6d 65 6e 74 73 20 74 68 69 73 20 66 75 6e 63  uments this func
0930: 74 69 6f 6e 20 65 78 70 65 63 74 73 2e 20 20 2d  tion expects.  -
0940: 31 20 69 66 20 74 68 65 20 6e 75 6d 62 65 72 20  1 if the number 
0950: 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 69 73 20  of arguments is 
0960: 76 61 72 69 61 62 6c 65 2e 0a 20 20 20 20 2f 2f  variable..    //
0970: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 20 20 20  / </summary>.   
0980: 20 70 75 62 6c 69 63 20 69 6e 74 20 41 72 67 75   public int Argu
0990: 6d 65 6e 74 73 0a 20 20 20 20 7b 0a 20 20 20 20  ments.    {.    
09a0: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 5f    get { return _
09b0: 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 3b 20 7d  argumentCount; }
09c0: 0a 20 20 20 20 20 20 73 65 74 20 7b 20 5f 61 72  .      set { _ar
09d0: 67 75 6d 65 6e 74 43 6f 75 6e 74 20 3d 20 76 61  gumentCount = va
09e0: 6c 75 65 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20  lue; }.    }..  
09f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a    /// <summary>.
0a00: 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 79 70 65      /// The type
0a10: 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 74 68 69   of function thi
0a20: 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  s implementation
0a30: 20 77 69 6c 6c 20 62 65 2e 0a 20 20 20 20 2f 2f   will be..    //
0a40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 20 20 20  / </summary>.   
0a50: 20 70 75 62 6c 69 63 20 46 75 6e 63 74 69 6f 6e   public Function
0a60: 54 79 70 65 20 46 75 6e 63 54 79 70 65 0a 20 20  Type FuncType.  
0a70: 20 20 7b 0a 20 20 20 20 20 20 67 65 74 20 7b 20    {.      get { 
0a80: 72 65 74 75 72 6e 20 5f 66 75 6e 63 74 69 6f 6e  return _function
0a90: 54 79 70 65 3b 20 7d 0a 20 20 20 20 20 20 73 65  Type; }.      se
0aa0: 74 20 7b 20 5f 66 75 6e 63 74 69 6f 6e 54 79 70  t { _functionTyp
0ab0: 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0a 20 20 20  e = value; }.   
0ac0: 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   }..    /// <sum
0ad0: 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 54 68  mary>.    /// Th
0ae0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73  e <see cref="Sys
0af0: 74 65 6d 2e 54 79 70 65 22 20 2f 3e 20 6f 62 6a  tem.Type" /> obj
0b00: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 68 61  ect instance tha
0b10: 74 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20  t describes the 
0b20: 63 6c 61 73 73 0a 20 20 20 20 2f 2f 2f 20 63 6f  class.    /// co
0b30: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 70  ntaining the imp
0b40: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  lementation for 
0b50: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 66  the associated f
0b60: 75 6e 63 74 69 6f 6e 2e 20 20 54 68 65 20 76 61  unction.  The va
0b70: 6c 75 65 20 6f 66 0a 20 20 20 20 2f 2f 2f 20 74  lue of.    /// t
0b80: 68 69 73 20 70 72 6f 70 65 72 74 79 20 77 69 6c  his property wil
0b90: 6c 20 6e 6f 74 20 62 65 20 75 73 65 64 20 69 66  l not be used if
0ba0: 20 65 69 74 68 65 72 20 74 68 65 20 3c 73 65 65   either the <see
0bb0: 20 63 72 65 66 3d 22 43 61 6c 6c 62 61 63 6b 31   cref="Callback1
0bc0: 22 20 2f 3e 20 6f 72 0a 20 20 20 20 2f 2f 2f 20  " /> or.    /// 
0bd0: 3c 73 65 65 20 63 72 65 66 3d 22 43 61 6c 6c 62  <see cref="Callb
0be0: 61 63 6b 32 22 20 2f 3e 20 70 72 6f 70 65 72 74  ack2" /> propert
0bf0: 79 20 76 61 6c 75 65 73 20 61 72 65 20 73 65 74  y values are set
0c00: 20 74 6f 20 6e 6f 6e 2d 6e 75 6c 6c 2e 0a 20 20   to non-null..  
0c10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0c20: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 54 79  .    internal Ty
0c30: 70 65 20 49 6e 73 74 61 6e 63 65 54 79 70 65 0a  pe InstanceType.
0c40: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 67 65      {.        ge
0c50: 74 20 7b 20 72 65 74 75 72 6e 20 5f 69 6e 73 74  t { return _inst
0c60: 61 6e 63 65 54 79 70 65 3b 20 7d 0a 20 20 20 20  anceType; }.    
0c70: 20 20 20 20 73 65 74 20 7b 20 5f 69 6e 73 74 61      set { _insta
0c80: 6e 63 65 54 79 70 65 20 3d 20 76 61 6c 75 65 3b  nceType = value;
0c90: 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f   }.    }..    //
0ca0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20  / <summary>.    
0cb0: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
0cc0: 66 3d 22 44 65 6c 65 67 61 74 65 22 20 2f 3e 20  f="Delegate" /> 
0cd0: 74 68 61 74 20 72 65 66 65 72 73 20 74 6f 20 74  that refers to t
0ce0: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
0cf0: 6e 20 66 6f 72 20 74 68 65 0a 20 20 20 20 2f 2f  n for the.    //
0d00: 2f 20 61 73 73 6f 63 69 61 74 65 64 20 66 75 6e  / associated fun
0d10: 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 69 73 20  ction.  If this 
0d20: 70 72 6f 70 65 72 74 79 20 76 61 6c 75 65 20 69  property value i
0d30: 73 20 73 65 74 20 74 6f 20 6e 6f 6e 2d 6e 75 6c  s set to non-nul
0d40: 6c 2c 20 69 74 20 77 69 6c 6c 0a 20 20 20 20 2f  l, it will.    /
0d50: 2f 2f 20 62 65 20 75 73 65 64 20 69 6e 73 74 65  // be used inste
0d60: 61 64 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63  ad of the <see c
0d70: 72 65 66 3d 22 49 6e 73 74 61 6e 63 65 54 79 70  ref="InstanceTyp
0d80: 65 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 76  e" /> property v
0d90: 61 6c 75 65 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f  alue..    /// </
0da0: 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20 69 6e 74  summary>.    int
0db0: 65 72 6e 61 6c 20 44 65 6c 65 67 61 74 65 20 43  ernal Delegate C
0dc0: 61 6c 6c 62 61 63 6b 31 0a 20 20 20 20 7b 0a 20  allback1.    {. 
0dd0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
0de0: 75 72 6e 20 5f 63 61 6c 6c 62 61 63 6b 31 3b 20  urn _callback1; 
0df0: 7d 0a 20 20 20 20 20 20 20 20 73 65 74 20 7b 20  }.        set { 
0e00: 5f 63 61 6c 6c 62 61 63 6b 31 20 3d 20 76 61 6c  _callback1 = val
0e10: 75 65 3b 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20  ue; }.    }..   
0e20: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a 20   /// <summary>. 
0e30: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
0e40: 63 72 65 66 3d 22 44 65 6c 65 67 61 74 65 22 20  cref="Delegate" 
0e50: 2f 3e 20 74 68 61 74 20 72 65 66 65 72 73 20 74  /> that refers t
0e60: 6f 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  o the implementa
0e70: 74 69 6f 6e 20 66 6f 72 20 74 68 65 0a 20 20 20  tion for the.   
0e80: 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
0e90: 66 75 6e 63 74 69 6f 6e 2e 20 20 49 66 20 74 68  function.  If th
0ea0: 69 73 20 70 72 6f 70 65 72 74 79 20 76 61 6c 75  is property valu
0eb0: 65 20 69 73 20 73 65 74 20 74 6f 20 6e 6f 6e 2d  e is set to non-
0ec0: 6e 75 6c 6c 2c 20 69 74 20 77 69 6c 6c 0a 20 20  null, it will.  
0ed0: 20 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 69 6e    /// be used in
0ee0: 73 74 65 61 64 20 6f 66 20 74 68 65 20 3c 73 65  stead of the <se
0ef0: 65 20 63 72 65 66 3d 22 49 6e 73 74 61 6e 63 65  e cref="Instance
0f00: 54 79 70 65 22 20 2f 3e 20 70 72 6f 70 65 72 74  Type" /> propert
0f10: 79 20 76 61 6c 75 65 2e 0a 20 20 20 20 2f 2f 2f  y value..    ///
0f20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20   </summary>.    
0f30: 69 6e 74 65 72 6e 61 6c 20 44 65 6c 65 67 61 74  internal Delegat
0f40: 65 20 43 61 6c 6c 62 61 63 6b 32 0a 20 20 20 20  e Callback2.    
0f50: 7b 0a 20 20 20 20 20 20 20 20 67 65 74 20 7b 20  {.        get { 
0f60: 72 65 74 75 72 6e 20 5f 63 61 6c 6c 62 61 63 6b  return _callback
0f70: 32 3b 20 7d 0a 20 20 20 20 20 20 20 20 73 65 74  2; }.        set
0f80: 20 7b 20 5f 63 61 6c 6c 62 61 63 6b 32 20 3d 20   { _callback2 = 
0f90: 76 61 6c 75 65 3b 20 7d 0a 20 20 20 20 7d 0a 20  value; }.    }. 
0fa0: 20 7d 0a 7d 0a                                    }.}.