System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact b1c063c01d66b0664e933d82bea39cdd6bb07058:


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 20 0a 20 2a 20 52  ft.com). * . * R
00b0: 65 6c 65 61 73 65 64 20 74 6f 20 74 68 65 20 70  eleased to the p
00c0: 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73  ublic domain, us
00d0: 65 20 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69  e at your own ri
00e0: 73 6b 21 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  sk!. ***********
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 2a 2f 0a 0a  *************/..
0120: 6e 61 6d 65 73 70 61 63 65 20 53 51 4c 69 74 65  namespace SQLite
0130: 2e 44 65 73 69 67 6e 65 72 0a 7b 0a 20 20 75 73  .Designer.{.  us
0140: 69 6e 67 20 53 79 73 74 65 6d 3b 0a 20 20 75 73  ing System;.  us
0150: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0160: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0a  ctions.Generic;.
0170: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54    using System.T
0180: 65 78 74 3b 0a 20 20 75 73 69 6e 67 20 4d 69 63  ext;.  using Mic
0190: 72 6f 73 6f 66 74 2e 56 69 73 75 61 6c 53 74 75  rosoft.VisualStu
01a0: 64 69 6f 2e 44 61 74 61 3b 0a 20 20 75 73 69 6e  dio.Data;.  usin
01b0: 67 20 4d 69 63 72 6f 73 6f 66 74 2e 56 69 73 75  g Microsoft.Visu
01c0: 61 6c 53 74 75 64 69 6f 2e 4f 4c 45 2e 49 6e 74  alStudio.OLE.Int
01d0: 65 72 6f 70 3b 0a 0a 20 20 2f 2f 2f 20 3c 73 75  erop;..  /// <su
01e0: 6d 6d 61 72 79 3e 0a 20 20 2f 2f 2f 20 54 68 69  mmary>.  /// Thi
01f0: 73 20 63 6c 61 73 73 20 69 73 20 75 73 65 64 20  s class is used 
0200: 74 6f 20 62 75 69 6c 64 20 69 64 65 6e 74 69 66  to build identif
0210: 69 65 72 20 61 72 72 61 79 73 20 61 6e 64 20 63  ier arrays and c
0220: 6f 6e 74 72 61 63 74 20 74 68 65 6d 2e 20 20 54  ontract them.  T
0230: 79 70 69 63 61 6c 6c 79 20 74 68 65 79 20 61 72  ypically they ar
0240: 65 20 0a 20 20 2f 2f 2f 20 70 61 73 73 65 64 20  e .  /// passed 
0250: 74 6f 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  to SQLiteConnect
0260: 69 6f 6e 2e 47 65 74 53 63 68 65 6d 61 28 29 20  ion.GetSchema() 
0270: 6f 72 20 61 72 65 20 63 6f 6e 74 72 61 63 74 65  or are contracte
0280: 64 20 66 6f 72 20 64 69 73 70 6c 61 79 20 6f 6e  d for display on
0290: 20 74 68 65 20 73 63 72 65 65 6e 20 6f 72 20 69   the screen or i
02a0: 6e 20 74 68 65 0a 20 20 2f 2f 2f 20 70 72 6f 70  n the.  /// prop
02b0: 65 72 74 69 65 73 20 77 69 6e 64 6f 77 2e 0a 20  erties window.. 
02c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a   /// </summary>.
02d0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
02e0: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44 61  d class SQLiteDa
02f0: 74 61 4f 62 6a 65 63 74 49 64 65 6e 74 69 66 69  taObjectIdentifi
0300: 65 72 52 65 73 6f 6c 76 65 72 20 3a 20 44 61 74  erResolver : Dat
0310: 61 4f 62 6a 65 63 74 49 64 65 6e 74 69 66 69 65  aObjectIdentifie
0320: 72 52 65 73 6f 6c 76 65 72 2c 20 49 4f 62 6a 65  rResolver, IObje
0330: 63 74 57 69 74 68 53 69 74 65 0a 20 20 7b 0a 20  ctWithSite.  {. 
0340: 20 20 20 70 72 69 76 61 74 65 20 44 61 74 61 43     private DataC
0350: 6f 6e 6e 65 63 74 69 6f 6e 20 5f 63 6f 6e 6e 65  onnection _conne
0360: 63 74 69 6f 6e 3b 0a 0a 20 20 20 20 70 75 62 6c  ction;..    publ
0370: 69 63 20 53 51 4c 69 74 65 44 61 74 61 4f 62 6a  ic SQLiteDataObj
0380: 65 63 74 49 64 65 6e 74 69 66 69 65 72 52 65 73  ectIdentifierRes
0390: 6f 6c 76 65 72 28 29 0a 20 20 20 20 7b 0a 20 20  olver().    {.  
03a0: 20 20 7d 0a 0a 20 20 20 20 69 6e 74 65 72 6e 61    }..    interna
03b0: 6c 20 53 51 4c 69 74 65 44 61 74 61 4f 62 6a 65  l SQLiteDataObje
03c0: 63 74 49 64 65 6e 74 69 66 69 65 72 52 65 73 6f  ctIdentifierReso
03d0: 6c 76 65 72 28 6f 62 6a 65 63 74 20 73 69 74 65  lver(object site
03e0: 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 5f 63  ).    {.      _c
03f0: 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 73 69 74 65  onnection = site
0400: 20 61 73 20 44 61 74 61 43 6f 6e 6e 65 63 74 69   as DataConnecti
0410: 6f 6e 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70  on;.    }..    p
0420: 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64  rotected overrid
0430: 65 20 6f 62 6a 65 63 74 5b 5d 20 51 75 69 63 6b  e object[] Quick
0440: 45 78 70 61 6e 64 49 64 65 6e 74 69 66 69 65 72  ExpandIdentifier
0450: 28 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65  (string typeName
0460: 2c 20 6f 62 6a 65 63 74 5b 5d 20 70 61 72 74 69  , object[] parti
0470: 61 6c 49 64 65 6e 74 69 66 69 65 72 29 0a 20 20  alIdentifier).  
0480: 20 20 7b 0a 20 20 20 20 20 20 69 66 20 28 74 79    {.      if (ty
0490: 70 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0a  peName == null).
04a0: 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20        {.        
04b0: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
04c0: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
04d0: 22 74 79 70 65 4e 61 6d 65 22 29 3b 0a 20 20 20  "typeName");.   
04e0: 20 20 20 7d 0a 0a 20 20 20 20 20 20 2f 2f 20 43     }..      // C
04f0: 72 65 61 74 65 20 61 6e 20 69 64 65 6e 74 69 66  reate an identif
0500: 69 65 72 20 61 72 72 61 79 20 6f 66 20 74 68 65  ier array of the
0510: 20 63 6f 72 72 65 63 74 20 66 75 6c 6c 20 6c 65   correct full le
0520: 6e 67 74 68 20 62 61 73 65 64 20 6f 6e 0a 20 20  ngth based on.  
0530: 20 20 20 20 2f 2f 20 74 68 65 20 6f 62 6a 65 63      // the objec
0540: 74 20 74 79 70 65 0a 20 20 20 20 20 20 6f 62 6a  t type.      obj
0550: 65 63 74 5b 5d 20 69 64 65 6e 74 69 66 69 65 72  ect[] identifier
0560: 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 20 20 69   = null;.      i
0570: 6e 74 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0a 0a  nt length = 0;..
0580: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74 79        switch (ty
0590: 70 65 4e 61 6d 65 2e 54 6f 4c 6f 77 65 72 49 6e  peName.ToLowerIn
05a0: 76 61 72 69 61 6e 74 28 29 29 0a 20 20 20 20 20  variant()).     
05b0: 20 7b 0a 20 20 20 20 20 20 20 20 63 61 73 65 20   {.        case 
05c0: 22 22 3a 0a 20 20 20 20 20 20 20 20 20 20 6c 65  "":.          le
05d0: 6e 67 74 68 20 3d 20 30 3b 0a 20 20 20 20 20 20  ngth = 0;.      
05e0: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20      break;.     
05f0: 20 20 20 63 61 73 65 20 22 74 61 62 6c 65 22 3a     case "table":
0600: 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22 76  .        case "v
0610: 69 65 77 22 3a 0a 20 20 20 20 20 20 20 20 20 20  iew":.          
0620: 6c 65 6e 67 74 68 20 3d 20 33 3b 0a 20 20 20 20  length = 3;.    
0630: 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20        break;.   
0640: 20 20 20 20 20 63 61 73 65 20 22 63 6f 6c 75 6d       case "colum
0650: 6e 22 3a 0a 20 20 20 20 20 20 20 20 63 61 73 65  n":.        case
0660: 20 22 69 6e 64 65 78 22 3a 0a 20 20 20 20 20 20   "index":.      
0670: 20 20 63 61 73 65 20 22 66 6f 72 65 69 67 6e 6b    case "foreignk
0680: 65 79 22 3a 0a 20 20 20 20 20 20 20 20 63 61 73  ey":.        cas
0690: 65 20 22 76 69 65 77 63 6f 6c 75 6d 6e 22 3a 0a  e "viewcolumn":.
06a0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 74 72          case "tr
06b0: 69 67 67 65 72 73 22 3a 0a 20 20 20 20 20 20 20  iggers":.       
06c0: 20 20 20 6c 65 6e 67 74 68 20 3d 20 34 3b 0a 20     length = 4;. 
06d0: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
06e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 69 6e          case "in
06f0: 64 65 78 63 6f 6c 75 6d 6e 22 3a 0a 20 20 20 20  dexcolumn":.    
0700: 20 20 20 20 63 61 73 65 20 22 66 6f 72 65 69 67      case "foreig
0710: 6e 6b 65 79 63 6f 6c 75 6d 6e 22 3a 0a 20 20 20  nkeycolumn":.   
0720: 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20         length = 
0730: 35 3b 0a 20 20 20 20 20 20 20 20 20 20 62 72 65  5;.          bre
0740: 61 6b 3b 0a 20 20 20 20 20 20 20 20 64 65 66 61  ak;.        defa
0750: 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 74  ult:.          t
0760: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 53 75 70 70  hrow new NotSupp
0770: 6f 72 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29  ortedException()
0780: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  ;.      }.      
0790: 69 64 65 6e 74 69 66 69 65 72 20 3d 20 6e 65 77  identifier = new
07a0: 20 6f 62 6a 65 63 74 5b 6c 65 6e 67 74 68 5d 3b   object[length];
07b0: 0a 0a 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68  ..      // If th
07c0: 65 20 69 6e 70 75 74 20 69 64 65 6e 74 69 66 69  e input identifi
07d0: 65 72 20 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c 20  er is not null, 
07e0: 63 6f 70 79 20 69 74 20 74 6f 20 74 68 65 20 66  copy it to the f
07f0: 75 6c 6c 0a 20 20 20 20 20 20 2f 2f 20 69 64 65  ull.      // ide
0800: 6e 74 69 66 69 65 72 20 61 72 72 61 79 2e 20 20  ntifier array.  
0810: 49 66 20 74 68 65 20 69 6e 70 75 74 20 69 64 65  If the input ide
0820: 6e 74 69 66 69 65 72 27 73 20 6c 65 6e 67 74 68  ntifier's length
0830: 20 69 73 20 6c 65 73 73 0a 20 20 20 20 20 20 2f   is less.      /
0840: 2f 20 74 68 61 6e 20 74 68 65 20 66 75 6c 6c 20  / than the full 
0850: 6c 65 6e 67 74 68 20 77 65 20 61 73 73 75 6d 65  length we assume
0860: 20 74 68 65 20 6d 6f 72 65 20 73 70 65 63 69 66   the more specif
0870: 69 63 20 70 61 72 74 73 20 61 72 65 0a 20 20 20  ic parts are.   
0880: 20 20 20 2f 2f 20 73 70 65 63 69 66 69 65 64 20     // specified 
0890: 61 6e 64 20 74 68 75 73 20 63 6f 70 79 20 69 6e  and thus copy in
08a0: 74 6f 20 74 68 65 20 72 69 67 68 74 6d 6f 73 74  to the rightmost
08b0: 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 0a   portion of the.
08c0: 20 20 20 20 20 20 2f 2f 20 66 75 6c 6c 20 69 64        // full id
08d0: 65 6e 74 69 66 69 65 72 20 61 72 72 61 79 2e 0a  entifier array..
08e0: 20 20 20 20 20 20 69 66 20 28 70 61 72 74 69 61        if (partia
08f0: 6c 49 64 65 6e 74 69 66 69 65 72 20 21 3d 20 6e  lIdentifier != n
0900: 75 6c 6c 29 0a 20 20 20 20 20 20 7b 0a 20 20 20  ull).      {.   
0910: 20 20 20 20 20 69 66 20 28 70 61 72 74 69 61 6c       if (partial
0920: 49 64 65 6e 74 69 66 69 65 72 2e 4c 65 6e 67 74  Identifier.Lengt
0930: 68 20 3e 20 6c 65 6e 67 74 68 29 0a 20 20 20 20  h > length).    
0940: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20      {.          
0950: 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
0960: 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
0970: 69 6f 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 7d  ion();.        }
0980: 0a 20 20 20 20 20 20 20 20 70 61 72 74 69 61 6c  .        partial
0990: 49 64 65 6e 74 69 66 69 65 72 2e 43 6f 70 79 54  Identifier.CopyT
09a0: 6f 28 69 64 65 6e 74 69 66 69 65 72 2c 20 6c 65  o(identifier, le
09b0: 6e 67 74 68 20 2d 20 70 61 72 74 69 61 6c 49 64  ngth - partialId
09c0: 65 6e 74 69 66 69 65 72 2e 4c 65 6e 67 74 68 29  entifier.Length)
09d0: 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20  ;.      }..     
09e0: 20 69 66 20 28 6c 65 6e 67 74 68 20 3e 20 30 29   if (length > 0)
09f0: 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20  .      {.       
0a00: 20 2f 2f 20 46 69 6c 6c 20 69 6e 20 74 68 65 20   // Fill in the 
0a10: 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73 65  current database
0a20: 20 69 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65   if not specifie
0a30: 64 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 28  d.        if (!(
0a40: 69 64 65 6e 74 69 66 69 65 72 5b 30 5d 20 69 73  identifier[0] is
0a50: 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20   string)).      
0a60: 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 69 64    {.          id
0a70: 65 6e 74 69 66 69 65 72 5b 30 5d 20 3d 20 5f 63  entifier[0] = _c
0a80: 6f 6e 6e 65 63 74 69 6f 6e 2e 53 6f 75 72 63 65  onnection.Source
0a90: 49 6e 66 6f 72 6d 61 74 69 6f 6e 5b 44 61 74 61  Information[Data
0aa0: 53 6f 75 72 63 65 49 6e 66 6f 72 6d 61 74 69 6f  SourceInformatio
0ab0: 6e 2e 44 65 66 61 75 6c 74 43 61 74 61 6c 6f 67  n.DefaultCatalog
0ac0: 5d 20 61 73 20 73 74 72 69 6e 67 3b 0a 20 20 20  ] as string;.   
0ad0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 0a       }.      }..
0ae0: 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68        if (length
0af0: 20 3e 20 31 29 0a 20 20 20 20 20 20 7b 0a 20 20   > 1).      {.  
0b00: 20 20 20 20 20 20 69 64 65 6e 74 69 66 69 65 72        identifier
0b10: 5b 31 5d 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20  [1] = null;.    
0b20: 20 20 7d 0a 0a 20 20 20 20 20 20 72 65 74 75 72    }..      retur
0b30: 6e 20 69 64 65 6e 74 69 66 69 65 72 3b 0a 20 20  n identifier;.  
0b40: 20 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    }..    /// <su
0b50: 6d 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 53  mmary>.    /// S
0b60: 74 72 69 70 73 20 6f 75 74 20 74 68 65 20 73 63  trips out the sc
0b70: 68 65 6d 61 2c 20 77 68 69 63 68 20 77 65 20 64  hema, which we d
0b80: 6f 6e 27 74 20 72 65 61 6c 6c 79 20 73 75 70 70  on't really supp
0b90: 6f 72 74 20 62 75 74 20 68 61 73 20 74 6f 20 62  ort but has to b
0ba0: 65 20 74 68 65 72 65 20 66 6f 72 20 63 65 72 74  e there for cert
0bb0: 61 69 6e 20 6f 70 65 72 61 74 69 6f 6e 73 20 69  ain operations i
0bc0: 6e 74 65 72 6e 61 6c 0a 20 20 20 20 2f 2f 2f 20  nternal.    /// 
0bd0: 74 6f 20 4d 53 27 73 20 64 65 73 69 67 6e 65 72  to MS's designer
0be0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
0bf0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0c00: 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  ry>.    /// <par
0c10: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d  am name="typeNam
0c20: 65 22 3e 54 68 65 20 74 79 70 65 20 6f 66 20 69  e">The type of i
0c30: 64 65 6e 74 69 66 69 65 72 20 74 6f 20 63 6f 6e  dentifier to con
0c40: 74 72 61 63 74 3c 2f 70 61 72 61 6d 3e 0a 20 20  tract</param>.  
0c50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
0c60: 65 3d 22 66 75 6c 6c 49 64 65 6e 74 69 66 69 65  e="fullIdentifie
0c70: 72 22 3e 54 68 65 20 66 75 6c 6c 20 69 64 65 6e  r">The full iden
0c80: 74 69 66 69 65 72 20 61 72 72 61 79 3c 2f 70 61  tifier array</pa
0c90: 72 61 6d 3e 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ram>.    /// <re
0ca0: 74 75 72 6e 73 3e 41 20 63 6f 6e 74 72 61 63 74  turns>A contract
0cb0: 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 61 72  ed identifier ar
0cc0: 72 61 79 3c 2f 72 65 74 75 72 6e 73 3e 0a 20 20  ray</returns>.  
0cd0: 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
0ce0: 72 69 64 65 20 6f 62 6a 65 63 74 5b 5d 20 51 75  ride object[] Qu
0cf0: 69 63 6b 43 6f 6e 74 72 61 63 74 49 64 65 6e 74  ickContractIdent
0d00: 69 66 69 65 72 28 73 74 72 69 6e 67 20 74 79 70  ifier(string typ
0d10: 65 4e 61 6d 65 2c 20 6f 62 6a 65 63 74 5b 5d 20  eName, object[] 
0d20: 66 75 6c 6c 49 64 65 6e 74 69 66 69 65 72 29 0a  fullIdentifier).
0d30: 20 20 20 20 7b 0a 20 20 20 20 20 20 69 66 20 28      {.      if (
0d40: 66 75 6c 6c 49 64 65 6e 74 69 66 69 65 72 2e 4c  fullIdentifier.L
0d50: 65 6e 67 74 68 20 3c 20 32 29 20 72 65 74 75 72  ength < 2) retur
0d60: 6e 20 66 75 6c 6c 49 64 65 6e 74 69 66 69 65 72  n fullIdentifier
0d70: 3b 0a 0a 20 20 20 20 20 20 6f 62 6a 65 63 74 5b  ;..      object[
0d80: 5d 20 69 64 65 6e 74 69 66 69 65 72 20 3d 20 6e  ] identifier = n
0d90: 65 77 20 6f 62 6a 65 63 74 5b 66 75 6c 6c 49 64  ew object[fullId
0da0: 65 6e 74 69 66 69 65 72 2e 4c 65 6e 67 74 68 20  entifier.Length 
0db0: 2d 20 31 5d 3b 0a 0a 20 20 20 20 20 20 66 6f 72  - 1];..      for
0dc0: 20 28 69 6e 74 20 6e 20 3d 20 31 3b 20 6e 20 3c   (int n = 1; n <
0dd0: 20 66 75 6c 6c 49 64 65 6e 74 69 66 69 65 72 2e   fullIdentifier.
0de0: 4c 65 6e 67 74 68 3b 20 6e 2b 2b 29 0a 20 20 20  Length; n++).   
0df0: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 64 65     {.        ide
0e00: 6e 74 69 66 69 65 72 5b 6e 20 2d 20 31 5d 20 3d  ntifier[n - 1] =
0e10: 20 66 75 6c 6c 49 64 65 6e 74 69 66 69 65 72 5b   fullIdentifier[
0e20: 6e 5d 3b 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20  n];.      }..   
0e30: 20 20 20 69 64 65 6e 74 69 66 69 65 72 5b 30 5d     identifier[0]
0e40: 20 3d 20 66 75 6c 6c 49 64 65 6e 74 69 66 69 65   = fullIdentifie
0e50: 72 5b 30 5d 3b 0a 0a 20 20 20 20 20 20 72 65 74  r[0];..      ret
0e60: 75 72 6e 20 69 64 65 6e 74 69 66 69 65 72 3b 0a  urn identifier;.
0e70: 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c      }..    /// <
0e80: 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f  summary>.    ///
0e90: 20 47 65 74 53 69 74 65 20 64 6f 65 73 20 6e 6f   GetSite does no
0ea0: 74 20 6e 65 65 64 20 74 6f 20 62 65 20 69 6d 70  t need to be imp
0eb0: 6c 65 6d 65 6e 74 65 64 20 73 69 6e 63 65 0a 20  lemented since. 
0ec0: 20 20 20 2f 2f 2f 20 44 44 45 58 20 6f 6e 6c 79     /// DDEX only
0ed0: 20 63 61 6c 6c 73 20 53 65 74 53 69 74 65 20 74   calls SetSite t
0ee0: 6f 20 73 69 74 65 20 74 68 65 20 6f 62 6a 65 63  o site the objec
0ef0: 74 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  t..    /// </sum
0f00: 6d 61 72 79 3e 0a 20 20 20 20 76 6f 69 64 20 49  mary>.    void I
0f10: 4f 62 6a 65 63 74 57 69 74 68 53 69 74 65 2e 47  ObjectWithSite.G
0f20: 65 74 53 69 74 65 28 72 65 66 20 47 75 69 64 20  etSite(ref Guid 
0f30: 72 69 69 64 2c 20 6f 75 74 20 49 6e 74 50 74 72  riid, out IntPtr
0f40: 20 70 70 76 53 69 74 65 29 0a 20 20 20 20 7b 0a   ppvSite).    {.
0f50: 20 20 20 20 20 20 70 70 76 53 69 74 65 20 3d 20        ppvSite = 
0f60: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0a 20 20 20  IntPtr.Zero;.   
0f70: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74     throw new Not
0f80: 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70  ImplementedExcep
0f90: 74 69 6f 6e 28 29 3b 0a 20 20 20 20 7d 0a 0a 20  tion();.    }.. 
0fa0: 20 20 20 76 6f 69 64 20 49 4f 62 6a 65 63 74 57     void IObjectW
0fb0: 69 74 68 53 69 74 65 2e 53 65 74 53 69 74 65 28  ithSite.SetSite(
0fc0: 6f 62 6a 65 63 74 20 70 55 6e 6b 53 69 74 65 29  object pUnkSite)
0fd0: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 5f 63 6f  .    {.      _co
0fe0: 6e 6e 65 63 74 69 6f 6e 20 3d 20 28 44 61 74 61  nnection = (Data
0ff0: 43 6f 6e 6e 65 63 74 69 6f 6e 29 70 55 6e 6b 53  Connection)pUnkS
1000: 69 74 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d  ite;.    }.  }.}
1010: 0a                                               .