System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 040f807764f1a8d07856433dad6531967de043d1:


0000: ef bb bf 75 73 69 6e 67 20 53 79 73 74 65 6d 3b  ...using System;
0010: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43  ..using System.C
0020: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
0030: 69 63 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  ic;..using Syste
0040: 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 53 70  m.Collections.Sp
0050: 65 63 69 61 6c 69 7a 65 64 3b 0d 0a 75 73 69 6e  ecialized;..usin
0060: 67 20 53 79 73 74 65 6d 2e 58 6d 6c 3b 0d 0a 75  g System.Xml;..u
0070: 73 69 6e 67 20 4e 44 6f 63 33 2e 43 6f 72 65 3b  sing NDoc3.Core;
0080: 0d 0a 75 73 69 6e 67 20 4e 44 6f 63 33 2e 58 6d  ..using NDoc3.Xm
0090: 6c 3b 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  l;....namespace 
00a0: 4e 44 6f 63 33 2e 44 6f 63 75 6d 65 6e 74 65 72  NDoc3.Documenter
00b0: 2e 4d 73 64 6e 20 7b 0d 0a 09 2f 2f 2f 3c 73 75  .Msdn {...///<su
00c0: 6d 6d 61 72 79 3e 0d 0a 09 2f 2f 2f 3c 2f 73 75  mmary>...///</su
00d0: 6d 6d 61 72 79 3e 0d 0a 09 70 75 62 6c 69 63 20  mmary>...public 
00e0: 63 6c 61 73 73 20 4e 61 6d 65 52 65 73 6f 6c 76  class NameResolv
00f0: 65 72 20 7b 0d 0a 09 09 70 75 62 6c 69 63 20 63  er {....public c
0100: 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 58 54 20  onst string EXT 
0110: 3d 20 22 2e 68 74 6d 6c 22 3b 0d 0a 0d 0a 09 09  = ".html";......
0120: 70 75 62 6c 69 63 20 4d 73 64 6e 58 73 6c 74 55  public MsdnXsltU
0130: 74 69 6c 69 74 69 65 73 20 75 74 69 6c 69 74 69  tilities utiliti
0140: 65 73 3b 0d 0a 09 09 70 72 69 76 61 74 65 20 72  es;....private r
0150: 65 61 64 6f 6e 6c 79 20 62 6f 6f 6c 20 6d 65 72  eadonly bool mer
0160: 67 65 41 73 73 65 6d 62 6c 69 65 73 3b 0d 0a 09  geAssemblies;...
0170: 09 70 72 69 76 61 74 65 20 72 65 61 64 6f 6e 6c  .private readonl
0180: 79 20 53 74 72 69 6e 67 44 69 63 74 69 6f 6e 61  y StringDictiona
0190: 72 79 20 66 69 6c 65 4e 61 6d 65 73 20 3d 20 6e  ry fileNames = n
01a0: 65 77 20 53 74 72 69 6e 67 44 69 63 74 69 6f 6e  ew StringDiction
01b0: 61 72 79 28 29 3b 0d 0a 09 09 70 72 69 76 61 74  ary();....privat
01c0: 65 20 72 65 61 64 6f 6e 6c 79 20 53 74 72 69 6e  e readonly Strin
01d0: 67 44 69 63 74 69 6f 6e 61 72 79 20 65 6c 65 6d  gDictionary elem
01e0: 4e 61 6d 65 73 20 3d 20 6e 65 77 20 53 74 72 69  Names = new Stri
01f0: 6e 67 44 69 63 74 69 6f 6e 61 72 79 28 29 3b 0d  ngDictionary();.
0200: 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 72 65 61  .....private rea
0210: 64 6f 6e 6c 79 20 52 65 66 65 72 65 6e 63 65 54  donly ReferenceT
0220: 79 70 65 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ypeDictionary<st
0230: 72 69 6e 67 2c 20 73 74 72 69 6e 67 5b 5d 3e 20  ring, string[]> 
0240: 61 73 73 65 6d 62 6c 79 52 65 66 65 72 65 6e 63  assemblyReferenc
0250: 65 73 20 3d 20 6e 65 77 20 52 65 66 65 72 65 6e  es = new Referen
0260: 63 65 54 79 70 65 44 69 63 74 69 6f 6e 61 72 79  ceTypeDictionary
0270: 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 5b  <string, string[
0280: 5d 3e 28 29 3b 0d 0a 0d 0a 09 09 2f 2f 2f 3c 73  ]>();......///<s
0290: 75 6d 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c 2f  ummary>....///</
02a0: 73 75 6d 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c  summary>....///<
02b0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 6f 63 75  param name="docu
02c0: 6d 65 6e 74 61 74 69 6f 6e 22 3e 3c 2f 70 61 72  mentation"></par
02d0: 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d  am>....///<param
02e0: 20 6e 61 6d 65 3d 22 6d 65 72 67 65 41 73 73 65   name="mergeAsse
02f0: 6d 62 6c 69 65 73 22 3e 3c 2f 70 61 72 61 6d 3e  mblies"></param>
0300: 0d 0a 09 09 70 75 62 6c 69 63 20 4e 61 6d 65 52  ....public NameR
0310: 65 73 6f 6c 76 65 72 28 58 6d 6c 44 6f 63 75 6d  esolver(XmlDocum
0320: 65 6e 74 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  ent documentatio
0330: 6e 2c 20 62 6f 6f 6c 20 6d 65 72 67 65 41 73 73  n, bool mergeAss
0340: 65 6d 62 6c 69 65 73 29 20 7b 0d 0a 09 09 09 74  emblies) {.....t
0350: 68 69 73 2e 6d 65 72 67 65 41 73 73 65 6d 62 6c  his.mergeAssembl
0360: 69 65 73 20 3d 20 6d 65 72 67 65 41 73 73 65 6d  ies = mergeAssem
0370: 62 6c 69 65 73 3b 0d 0a 09 09 09 42 75 69 6c 64  blies;.....Build
0380: 4e 61 6d 65 54 61 62 6c 65 73 28 64 6f 63 75 6d  NameTables(docum
0390: 65 6e 74 61 74 69 6f 6e 2c 20 6d 65 72 67 65 41  entation, mergeA
03a0: 73 73 65 6d 62 6c 69 65 73 29 3b 0d 0a 09 09 7d  ssemblies);....}
03b0: 0d 0a 0d 0a 09 09 23 72 65 67 69 6f 6e 20 55 73  ......#region Us
03c0: 65 64 20 66 6f 72 20 48 74 6d 6c 20 66 69 6c 65  ed for Html file
03d0: 20 67 65 6e 65 72 61 74 69 6f 6e 0d 0a 0d 0a 09   generation.....
03e0: 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d 0a 09  .///<summary>...
03f0: 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  .///</summary>..
0400: 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65  ..///<param name
0410: 3d 22 61 73 73 65 6d 62 6c 79 4e 61 6d 65 22 3e  ="assemblyName">
0420: 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c  </param>....///<
0430: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65  param name="type
0440: 49 44 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09  ID"></param>....
0450: 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  ///<returns></re
0460: 74 75 72 6e 73 3e 0d 0a 09 09 70 75 62 6c 69 63  turns>....public
0470: 20 73 74 72 69 6e 67 20 47 65 74 46 69 6c 65 6e   string GetFilen
0480: 61 6d 65 46 6f 72 46 69 65 6c 64 4c 69 73 74 28  ameForFieldList(
0490: 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79 4e  string assemblyN
04a0: 61 6d 65 2c 20 73 74 72 69 6e 67 20 74 79 70 65  ame, string type
04b0: 49 44 29 20 7b 0d 0a 09 09 09 72 65 74 75 72 6e  ID) {.....return
04c0: 20 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49   GetFilenameForI
04d0: 64 53 70 65 63 69 61 6c 28 61 73 73 65 6d 62 6c  dSpecial(assembl
04e0: 79 4e 61 6d 65 2c 20 74 79 70 65 49 44 2c 20 22  yName, typeID, "
04f0: 7e 46 69 65 6c 64 73 22 29 3b 0d 0a 09 09 7d 0d  ~Fields");....}.
0500: 0a 0d 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79  .....///<summary
0510: 3e 0d 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72  >....///</summar
0520: 79 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20  y>....///<param 
0530: 6e 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61  name="assemblyNa
0540: 6d 65 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09  me"></param>....
0550: 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  ///<param name="
0560: 74 79 70 65 49 44 22 3e 3c 2f 70 61 72 61 6d 3e  typeID"></param>
0570: 0d 0a 09 09 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e  ....///<returns>
0580: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 09 09 70 75  </returns>....pu
0590: 62 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74 46  blic string GetF
05a0: 69 6c 65 6e 61 6d 65 46 6f 72 4f 70 65 72 61 74  ilenameForOperat
05b0: 6f 72 4c 69 73 74 28 73 74 72 69 6e 67 20 61 73  orList(string as
05c0: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72 69  semblyName, stri
05d0: 6e 67 20 74 79 70 65 49 44 29 20 7b 0d 0a 09 09  ng typeID) {....
05e0: 09 72 65 74 75 72 6e 20 47 65 74 46 69 6c 65 6e  .return GetFilen
05f0: 61 6d 65 46 6f 72 49 64 53 70 65 63 69 61 6c 28  ameForIdSpecial(
0600: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79  assemblyName, ty
0610: 70 65 49 44 2c 20 22 7e 4f 70 65 72 61 74 6f 72  peID, "~Operator
0620: 73 22 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f  s");....}....../
0630: 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d 0a 09 09 2f  //<summary>..../
0640: 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 09 09  //</summary>....
0650: 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  ///<param name="
0660: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 22 3e 3c 2f  assemblyName"></
0670: 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70 61  param>....///<pa
0680: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 49 44  ram name="typeID
0690: 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f  "></param>....//
06a0: 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75  /<returns></retu
06b0: 72 6e 73 3e 0d 0a 09 09 70 75 62 6c 69 63 20 73  rns>....public s
06c0: 74 72 69 6e 67 20 47 65 74 46 69 6c 65 6e 61 6d  tring GetFilenam
06d0: 65 46 6f 72 4d 65 74 68 6f 64 4c 69 73 74 28 73  eForMethodList(s
06e0: 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79 4e 61  tring assemblyNa
06f0: 6d 65 2c 20 73 74 72 69 6e 67 20 74 79 70 65 49  me, string typeI
0700: 44 29 20 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20  D) {.....return 
0710: 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64  GetFilenameForId
0720: 53 70 65 63 69 61 6c 28 61 73 73 65 6d 62 6c 79  Special(assembly
0730: 4e 61 6d 65 2c 20 74 79 70 65 49 44 2c 20 22 7e  Name, typeID, "~
0740: 4d 65 74 68 6f 64 73 22 29 3b 0d 0a 09 09 7d 0d  Methods");....}.
0750: 0a 0d 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79  .....///<summary
0760: 3e 0d 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72  >....///</summar
0770: 79 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20  y>....///<param 
0780: 6e 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61  name="assemblyNa
0790: 6d 65 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09  me"></param>....
07a0: 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  ///<param name="
07b0: 74 79 70 65 49 44 22 3e 3c 2f 70 61 72 61 6d 3e  typeID"></param>
07c0: 0d 0a 09 09 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e  ....///<returns>
07d0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 09 09 70 75  </returns>....pu
07e0: 62 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74 46  blic string GetF
07f0: 69 6c 65 6e 61 6d 65 46 6f 72 50 72 6f 70 65 72  ilenameForProper
0800: 74 79 4c 69 73 74 28 73 74 72 69 6e 67 20 61 73  tyList(string as
0810: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72 69  semblyName, stri
0820: 6e 67 20 74 79 70 65 49 44 29 20 7b 0d 0a 09 09  ng typeID) {....
0830: 09 72 65 74 75 72 6e 20 47 65 74 46 69 6c 65 6e  .return GetFilen
0840: 61 6d 65 46 6f 72 49 64 53 70 65 63 69 61 6c 28  ameForIdSpecial(
0850: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79  assemblyName, ty
0860: 70 65 49 44 2c 20 22 7e 50 72 6f 70 65 72 74 69  peID, "~Properti
0870: 65 73 22 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09  es");....}......
0880: 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d 0a 09 09  ///<summary>....
0890: 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 09  ///</summary>...
08a0: 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  .///<param name=
08b0: 22 61 73 73 65 6d 62 6c 79 4e 61 6d 65 22 3e 3c  "assemblyName"><
08c0: 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70  /param>....///<p
08d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 49  aram name="typeI
08e0: 44 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f  D"></param>..../
08f0: 2f 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74  //<returns></ret
0900: 75 72 6e 73 3e 0d 0a 09 09 70 75 62 6c 69 63 20  urns>....public 
0910: 73 74 72 69 6e 67 20 47 65 74 46 69 6c 65 6e 61  string GetFilena
0920: 6d 65 46 6f 72 45 76 65 6e 74 4c 69 73 74 28 73  meForEventList(s
0930: 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79 4e 61  tring assemblyNa
0940: 6d 65 2c 20 73 74 72 69 6e 67 20 74 79 70 65 49  me, string typeI
0950: 44 29 20 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20  D) {.....return 
0960: 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64  GetFilenameForId
0970: 53 70 65 63 69 61 6c 28 61 73 73 65 6d 62 6c 79  Special(assembly
0980: 4e 61 6d 65 2c 20 74 79 70 65 49 44 2c 20 22 7e  Name, typeID, "~
0990: 45 76 65 6e 74 73 22 29 3b 0d 0a 09 09 7d 0d 0a  Events");....}..
09a0: 09 09 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a  ..#endregion....
09b0: 09 09 2f 2f 20 65 78 70 6f 73 65 64 20 74 6f 20  ..// exposed to 
09c0: 58 53 4c 54 0d 0a 09 09 2f 2f 2f 3c 73 75 6d 6d  XSLT....///<summ
09d0: 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c 2f 73 75 6d  ary>....///</sum
09e0: 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72  mary>....///<par
09f0: 61 6d 20 6e 61 6d 65 3d 22 63 75 72 72 65 6e 74  am name="current
0a00: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 3e 3c 2f  AssemblyName"></
0a10: 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70 61  param>....///<pa
0a20: 72 61 6d 20 6e 61 6d 65 3d 22 6d 65 6d 62 65 72  ram name="member
0a30: 49 64 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09  Id"></param>....
0a40: 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  ///<returns></re
0a50: 74 75 72 6e 73 3e 0d 0a 09 09 70 75 62 6c 69 63  turns>....public
0a60: 20 73 74 72 69 6e 67 20 47 65 74 44 69 73 70 6c   string GetDispl
0a70: 61 79 4e 61 6d 65 46 6f 72 49 64 28 73 74 72 69  ayNameForId(stri
0a80: 6e 67 20 63 75 72 72 65 6e 74 41 73 73 65 6d 62  ng currentAssemb
0a90: 6c 79 4e 61 6d 65 2c 20 73 74 72 69 6e 67 20 6d  lyName, string m
0aa0: 65 6d 62 65 72 49 64 29 20 7b 0d 0a 09 09 09 73  emberId) {.....s
0ab0: 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 65 6c 65  tring name = ele
0ac0: 6d 4e 61 6d 65 73 5b 63 75 72 72 65 6e 74 41 73  mNames[currentAs
0ad0: 73 65 6d 62 6c 79 4e 61 6d 65 20 2b 20 6d 65 6d  semblyName + mem
0ae0: 62 65 72 49 64 5d 3b 0d 0a 09 09 09 69 66 20 28  berId];.....if (
0af0: 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0d  name == null) {.
0b00: 0a 09 09 09 09 2f 2f 20 73 65 61 72 63 68 20 66  .....// search f
0b10: 6f 72 20 69 64 65 6e 74 69 66 69 65 72 20 69 6e  or identifier in
0b20: 20 72 65 66 65 72 65 6e 63 65 64 20 61 73 73 65   referenced asse
0b30: 6d 62 6c 69 65 73 0d 0a 09 09 09 09 73 74 72 69  mblies......stri
0b40: 6e 67 5b 5d 20 61 73 73 65 6d 62 6c 79 52 65 66  ng[] assemblyRef
0b50: 65 72 65 6e 63 65 20 3d 20 61 73 73 65 6d 62 6c  erence = assembl
0b60: 79 52 65 66 65 72 65 6e 63 65 73 5b 63 75 72 72  yReferences[curr
0b70: 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 5d  entAssemblyName]
0b80: 3b 0d 0a 09 09 09 09 69 66 20 28 61 73 73 65 6d  ;......if (assem
0b90: 62 6c 79 52 65 66 65 72 65 6e 63 65 20 21 3d 20  blyReference != 
0ba0: 6e 75 6c 6c 29 20 7b 0d 0a 09 09 09 09 09 66 6f  null) {.......fo
0bb0: 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 61 73  reach (string as
0bc0: 73 65 6d 62 6c 79 4e 61 6d 65 20 69 6e 20 61 73  semblyName in as
0bd0: 73 65 6d 62 6c 79 52 65 66 65 72 65 6e 63 65 29  semblyReference)
0be0: 20 7b 0d 0a 09 09 09 09 09 09 6e 61 6d 65 20 3d   {........name =
0bf0: 20 65 6c 65 6d 4e 61 6d 65 73 5b 61 73 73 65 6d   elemNames[assem
0c00: 62 6c 79 4e 61 6d 65 20 2b 20 6d 65 6d 62 65 72  blyName + member
0c10: 49 64 5d 3b 0d 0a 09 09 09 09 09 09 69 66 20 28  Id];........if (
0c20: 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 09  name != null)...
0c30: 09 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09  ......break;....
0c40: 09 09 09 7d 0d 0a 09 09 09 09 7d 0d 0a 09 09 09  ...}......}.....
0c50: 7d 0d 0a 0d 0a 09 09 09 69 66 20 28 6e 61 6d 65  }.......if (name
0c60: 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0d 0a 09 09 09   == null) {.....
0c70: 09 6e 61 6d 65 20 3d 20 65 6c 65 6d 4e 61 6d 65  .name = elemName
0c80: 73 5b 6d 65 6d 62 65 72 49 64 5d 3b 0d 0a 09 09  s[memberId];....
0c90: 09 7d 0d 0a 09 09 09 72 65 74 75 72 6e 20 6e 61  .}.....return na
0ca0: 6d 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f  me;....}......//
0cb0: 20 65 78 70 6f 73 65 64 20 74 6f 20 58 53 4c 54   exposed to XSLT
0cc0: 0d 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e  ....///<summary>
0cd0: 0d 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79  ....///</summary
0ce0: 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e  >....///<param n
0cf0: 61 6d 65 3d 22 63 75 72 72 65 6e 74 41 73 73 65  ame="currentAsse
0d00: 6d 62 6c 79 4e 61 6d 65 22 3e 3c 2f 70 61 72 61  mblyName"></para
0d10: 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20  m>....///<param 
0d20: 6e 61 6d 65 3d 22 6d 65 6d 62 65 72 49 64 22 3e  name="memberId">
0d30: 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c  </param>....///<
0d40: 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e  returns></return
0d50: 73 3e 0d 0a 09 09 70 75 62 6c 69 63 20 73 74 72  s>....public str
0d60: 69 6e 67 20 47 65 74 46 69 6c 65 6e 61 6d 65 46  ing GetFilenameF
0d70: 6f 72 49 64 28 73 74 72 69 6e 67 20 63 75 72 72  orId(string curr
0d80: 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c  entAssemblyName,
0d90: 20 73 74 72 69 6e 67 20 6d 65 6d 62 65 72 49 64   string memberId
0da0: 29 20 7b 0d 0a 09 09 09 2f 2f 20 6c 6f 6f 6b 75  ) {.....// looku
0db0: 70 20 63 75 72 72 65 6e 74 20 61 73 73 65 6d 62  p current assemb
0dc0: 6c 79 0d 0a 09 09 09 73 74 72 69 6e 67 20 66 69  ly.....string fi
0dd0: 6c 65 6e 61 6d 65 20 3d 20 47 65 74 46 69 6c 65  lename = GetFile
0de0: 6e 61 6d 65 46 6f 72 49 64 49 6e 74 65 72 6e 61  nameForIdInterna
0df0: 6c 28 63 75 72 72 65 6e 74 41 73 73 65 6d 62 6c  l(currentAssembl
0e00: 79 4e 61 6d 65 2c 20 6d 65 6d 62 65 72 49 64 29  yName, memberId)
0e10: 3b 0d 0a 09 09 09 72 65 74 75 72 6e 20 66 69 6c  ;.....return fil
0e20: 65 6e 61 6d 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09  ename;....}.....
0e30: 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d 0a 09  .///<summary>...
0e40: 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  .///</summary>..
0e50: 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65  ..///<param name
0e60: 3d 22 61 73 73 65 6d 62 6c 79 4e 61 6d 65 22 3e  ="assemblyName">
0e70: 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c  </param>....///<
0e80: 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e  returns></return
0e90: 73 3e 0d 0a 09 09 70 75 62 6c 69 63 20 73 74 72  s>....public str
0ea0: 69 6e 67 20 47 65 74 46 69 6c 65 6e 61 6d 65 46  ing GetFilenameF
0eb0: 6f 72 41 73 73 65 6d 62 6c 79 28 73 74 72 69 6e  orAssembly(strin
0ec0: 67 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 29 20  g assemblyName) 
0ed0: 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 47 65 74  {.....return Get
0ee0: 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 61 73  FilenameForId(as
0ef0: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6e 75 6c 6c  semblyName, null
0f00: 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20  );....}......// 
0f10: 65 78 70 6f 73 65 64 20 74 6f 20 58 53 4c 54 0d  exposed to XSLT.
0f20: 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d  ...///<summary>.
0f30: 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e  ...///</summary>
0f40: 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61  ....///<param na
0f50: 6d 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61 6d 65  me="assemblyName
0f60: 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f  "></param>....//
0f70: 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61  /<param name="na
0f80: 6d 65 73 70 61 63 65 4e 61 6d 65 22 3e 3c 2f 70  mespaceName"></p
0f90: 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 72 65 74  aram>....///<ret
0fa0: 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d  urns></returns>.
0fb0: 0a 09 09 70 75 62 6c 69 63 20 73 74 72 69 6e 67  ...public string
0fc0: 20 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 4e   GetFilenameForN
0fd0: 61 6d 65 73 70 61 63 65 48 69 65 72 61 72 63 68  amespaceHierarch
0fe0: 79 28 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c  y(string assembl
0ff0: 79 4e 61 6d 65 2c 20 73 74 72 69 6e 67 20 6e 61  yName, string na
1000: 6d 65 73 70 61 63 65 4e 61 6d 65 29 20 7b 0d 0a  mespaceName) {..
1010: 09 09 09 72 65 74 75 72 6e 20 47 65 74 46 69 6c  ...return GetFil
1020: 65 6e 61 6d 65 46 6f 72 49 64 53 70 65 63 69 61  enameForIdSpecia
1030: 6c 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  l(assemblyName, 
1040: 22 4e 3a 22 20 2b 20 6e 61 6d 65 73 70 61 63 65  "N:" + namespace
1050: 4e 61 6d 65 2c 20 22 7e 48 69 65 72 61 72 63 68  Name, "~Hierarch
1060: 79 22 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f  y");....}....../
1070: 2f 20 65 78 70 6f 73 65 64 20 74 6f 20 58 53 4c  / exposed to XSL
1080: 54 0d 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79  T....///<summary
1090: 3e 0d 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72  >....///</summar
10a0: 79 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20  y>....///<param 
10b0: 6e 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61  name="assemblyNa
10c0: 6d 65 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09  me"></param>....
10d0: 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  ///<param name="
10e0: 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65 22 3e 3c  namespaceName"><
10f0: 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 72  /param>....///<r
1100: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
1110: 3e 0d 0a 09 09 70 75 62 6c 69 63 20 73 74 72 69  >....public stri
1120: 6e 67 20 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f  ng GetFilenameFo
1130: 72 4e 61 6d 65 73 70 61 63 65 28 73 74 72 69 6e  rNamespace(strin
1140: 67 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  g assemblyName, 
1150: 73 74 72 69 6e 67 20 6e 61 6d 65 73 70 61 63 65  string namespace
1160: 4e 61 6d 65 29 20 7b 0d 0a 09 09 09 69 66 20 28  Name) {.....if (
1170: 6d 65 72 67 65 41 73 73 65 6d 62 6c 69 65 73 29  mergeAssemblies)
1180: 0d 0a 09 09 09 09 61 73 73 65 6d 62 6c 79 4e 61  ......assemblyNa
1190: 6d 65 20 3d 20 73 74 72 69 6e 67 2e 45 6d 70 74  me = string.Empt
11a0: 79 3b 0d 0a 09 09 09 69 66 20 28 73 74 72 69 6e  y;.....if (strin
11b0: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
11c0: 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65 29 29 0d  namespaceName)).
11d0: 0a 09 09 09 09 6e 61 6d 65 73 70 61 63 65 4e 61  .....namespaceNa
11e0: 6d 65 20 3d 20 22 28 67 6c 6f 62 61 6c 29 22 3b  me = "(global)";
11f0: 0d 0a 09 09 09 72 65 74 75 72 6e 20 47 65 74 46  .....return GetF
1200: 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 61 73 73  ilenameForId(ass
1210: 65 6d 62 6c 79 4e 61 6d 65 2c 20 22 4e 3a 22 20  emblyName, "N:" 
1220: 2b 20 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65 29  + namespaceName)
1230: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 65  ;....}......// e
1240: 78 70 6f 73 65 64 20 74 6f 20 58 53 4c 54 0d 0a  xposed to XSLT..
1250: 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d 0a  ..///<summary>..
1260: 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e 0d  ..///</summary>.
1270: 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d  ...///<param nam
1280: 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61 6d 65 22  e="assemblyName"
1290: 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f  ></param>....///
12a0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70  <param name="typ
12b0: 65 49 44 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09  eID"></param>...
12c0: 09 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f 72  .///<returns></r
12d0: 65 74 75 72 6e 73 3e 0d 0a 09 09 70 75 62 6c 69  eturns>....publi
12e0: 63 20 73 74 72 69 6e 67 20 47 65 74 46 69 6c 65  c string GetFile
12f0: 6e 61 6d 65 46 6f 72 54 79 70 65 48 69 65 72 61  nameForTypeHiera
1300: 72 63 68 79 28 73 74 72 69 6e 67 20 61 73 73 65  rchy(string asse
1310: 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72 69 6e 67  mblyName, string
1320: 20 74 79 70 65 49 44 29 20 7b 0d 0a 09 09 09 72   typeID) {.....r
1330: 65 74 75 72 6e 20 47 65 74 46 69 6c 65 6e 61 6d  eturn GetFilenam
1340: 65 46 6f 72 49 64 53 70 65 63 69 61 6c 28 61 73  eForIdSpecial(as
1350: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70 65  semblyName, type
1360: 49 44 2c 20 22 7e 48 69 65 72 61 72 63 68 79 22  ID, "~Hierarchy"
1370: 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20  );....}......// 
1380: 65 78 70 6f 73 65 64 20 74 6f 20 58 53 4c 54 0d  exposed to XSLT.
1390: 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d  ...///<summary>.
13a0: 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e  ...///</summary>
13b0: 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61  ....///<param na
13c0: 6d 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61 6d 65  me="assemblyName
13d0: 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f  "></param>....//
13e0: 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79  /<param name="ty
13f0: 70 65 49 44 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a  peID"></param>..
1400: 09 09 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f  ..///<returns></
1410: 72 65 74 75 72 6e 73 3e 0d 0a 09 09 70 75 62 6c  returns>....publ
1420: 69 63 20 73 74 72 69 6e 67 20 47 65 74 46 69 6c  ic string GetFil
1430: 65 6e 61 6d 65 46 6f 72 54 79 70 65 4d 65 6d 62  enameForTypeMemb
1440: 65 72 4c 69 73 74 28 73 74 72 69 6e 67 20 61 73  erList(string as
1450: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72 69  semblyName, stri
1460: 6e 67 20 74 79 70 65 49 44 29 20 7b 0d 0a 09 09  ng typeID) {....
1470: 09 72 65 74 75 72 6e 20 47 65 74 46 69 6c 65 6e  .return GetFilen
1480: 61 6d 65 46 6f 72 49 64 53 70 65 63 69 61 6c 28  ameForIdSpecial(
1490: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79  assemblyName, ty
14a0: 70 65 49 44 2c 20 22 7e 4d 65 6d 62 65 72 73 22  peID, "~Members"
14b0: 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20  );....}......// 
14c0: 65 78 70 6f 73 65 64 20 74 6f 20 58 53 4c 54 0d  exposed to XSLT.
14d0: 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d  ...///<summary>.
14e0: 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e  ...///</summary>
14f0: 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61  ....///<param na
1500: 6d 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61 6d 65  me="assemblyName
1510: 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f  "></param>....//
1520: 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79  /<param name="ty
1530: 70 65 49 44 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a  peID"></param>..
1540: 09 09 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f  ..///<returns></
1550: 72 65 74 75 72 6e 73 3e 0d 0a 09 09 70 75 62 6c  returns>....publ
1560: 69 63 20 73 74 72 69 6e 67 20 47 65 74 46 69 6c  ic string GetFil
1570: 65 6e 61 6d 65 46 6f 72 43 6f 6e 73 74 72 75 63  enameForConstruc
1580: 74 6f 72 4c 69 73 74 28 73 74 72 69 6e 67 20 61  torList(string a
1590: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72  ssemblyName, str
15a0: 69 6e 67 20 74 79 70 65 49 44 29 20 7b 0d 0a 09  ing typeID) {...
15b0: 09 09 72 65 74 75 72 6e 20 47 65 74 46 69 6c 65  ..return GetFile
15c0: 6e 61 6d 65 46 6f 72 49 64 53 70 65 63 69 61 6c  nameForIdSpecial
15d0: 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74  (assemblyName, t
15e0: 79 70 65 49 44 2c 20 22 7e 43 6f 6e 73 74 72 75  ypeID, "~Constru
15f0: 63 74 6f 72 73 22 29 3b 0d 0a 09 09 7d 0d 0a 0d  ctors");....}...
1600: 0a 09 09 2f 2f 20 65 78 70 6f 73 65 64 20 74 6f  ...// exposed to
1610: 20 58 53 4c 54 0d 0a 09 09 2f 2f 2f 3c 73 75 6d   XSLT....///<sum
1620: 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c 2f 73 75  mary>....///</su
1630: 6d 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c 70 61  mmary>....///<pa
1640: 72 61 6d 20 6e 61 6d 65 3d 22 61 73 73 65 6d 62  ram name="assemb
1650: 6c 79 4e 61 6d 65 22 3e 3c 2f 70 61 72 61 6d 3e  lyName"></param>
1660: 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61  ....///<param na
1670: 6d 65 3d 22 74 79 70 65 49 44 22 3e 3c 2f 70 61  me="typeID"></pa
1680: 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61  ram>....///<para
1690: 6d 20 6e 61 6d 65 3d 22 6f 70 65 72 61 74 6f 72  m name="operator
16a0: 4e 61 6d 65 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a  Name"></param>..
16b0: 09 09 2f 2f 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f  ..///<returns></
16c0: 72 65 74 75 72 6e 73 3e 0d 0a 09 09 70 75 62 6c  returns>....publ
16d0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 46 69 6c  ic string GetFil
16e0: 65 6e 61 6d 65 46 6f 72 4f 70 65 72 61 74 6f 72  enameForOperator
16f0: 4f 76 65 72 6c 6f 61 64 73 28 73 74 72 69 6e 67  Overloads(string
1700: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73   assemblyName, s
1710: 74 72 69 6e 67 20 74 79 70 65 49 44 2c 20 73 74  tring typeID, st
1720: 72 69 6e 67 20 6f 70 65 72 61 74 6f 72 4e 61 6d  ring operatorNam
1730: 65 29 20 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20  e) {.....return 
1740: 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64  GetFilenameForId
1750: 53 70 65 63 69 61 6c 28 61 73 73 65 6d 62 6c 79  Special(assembly
1760: 4e 61 6d 65 2c 20 74 79 70 65 49 44 2c 20 22 2e  Name, typeID, ".
1770: 22 20 2b 20 6f 70 65 72 61 74 6f 72 4e 61 6d 65  " + operatorName
1780: 2e 52 65 70 6c 61 63 65 28 27 60 27 2c 20 27 24  .Replace('`', '$
1790: 27 29 20 2b 20 22 7e 4f 76 65 72 6c 6f 61 64 73  ') + "~Overloads
17a0: 22 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f  ");....}......//
17b0: 20 65 78 70 6f 73 65 64 20 74 6f 20 58 53 4c 54   exposed to XSLT
17c0: 0d 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72 79 3e  ....///<summary>
17d0: 0d 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61 72 79  ....///</summary
17e0: 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e  >....///<param n
17f0: 61 6d 65 3d 22 61 73 73 65 6d 62 6c 79 4e 61 6d  ame="assemblyNam
1800: 65 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f  e"></param>..../
1810: 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  //<param name="t
1820: 79 70 65 49 44 22 3e 3c 2f 70 61 72 61 6d 3e 0d  ypeID"></param>.
1830: 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d  ...///<param nam
1840: 65 3d 22 70 72 6f 70 65 72 74 79 4e 61 6d 65 22  e="propertyName"
1850: 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f  ></param>....///
1860: 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72  <returns></retur
1870: 6e 73 3e 0d 0a 09 09 70 75 62 6c 69 63 20 73 74  ns>....public st
1880: 72 69 6e 67 20 47 65 74 46 69 6c 65 6e 61 6d 65  ring GetFilename
1890: 46 6f 72 50 72 6f 70 65 72 74 79 4f 76 65 72 6c  ForPropertyOverl
18a0: 6f 61 64 73 28 73 74 72 69 6e 67 20 61 73 73 65  oads(string asse
18b0: 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72 69 6e 67  mblyName, string
18c0: 20 74 79 70 65 49 44 2c 20 73 74 72 69 6e 67 20   typeID, string 
18d0: 70 72 6f 70 65 72 74 79 4e 61 6d 65 29 20 7b 0d  propertyName) {.
18e0: 0a 09 09 09 73 74 72 69 6e 67 20 66 69 6c 65 4e  ....string fileN
18f0: 61 6d 65 20 3d 20 47 65 74 46 69 6c 65 6e 61 6d  ame = GetFilenam
1900: 65 46 6f 72 49 64 53 70 65 63 69 61 6c 28 61 73  eForIdSpecial(as
1910: 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70 65  semblyName, type
1920: 49 44 2c 20 22 2e 22 20 2b 20 70 72 6f 70 65 72  ID, "." + proper
1930: 74 79 4e 61 6d 65 2e 52 65 70 6c 61 63 65 28 27  tyName.Replace('
1940: 60 27 2c 20 27 24 27 29 20 2b 20 22 7e 4f 76 65  `', '$') + "~Ove
1950: 72 6c 6f 61 64 73 22 29 3b 0d 0a 09 09 09 72 65  rloads");.....re
1960: 74 75 72 6e 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  turn fileName;..
1970: 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 65 78 70 6f  ..}......// expo
1980: 73 65 64 20 74 6f 20 58 53 4c 54 0d 0a 09 09 2f  sed to XSLT..../
1990: 2f 2f 3c 73 75 6d 6d 61 72 79 3e 0d 0a 09 09 2f  //<summary>..../
19a0: 2f 2f 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 09 09  //</summary>....
19b0: 2f 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  ///<param name="
19c0: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 22 3e 3c 2f  assemblyName"></
19d0: 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70 61  param>....///<pa
19e0: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 49 44  ram name="typeID
19f0: 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f  "></param>....//
1a00: 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 65  /<param name="me
1a10: 74 68 6f 64 4e 61 6d 65 22 3e 3c 2f 70 61 72 61  thodName"></para
1a20: 6d 3e 0d 0a 09 09 2f 2f 2f 3c 72 65 74 75 72 6e  m>....///<return
1a30: 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 09 09  s></returns>....
1a40: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 47 65  public string Ge
1a50: 74 46 69 6c 65 6e 61 6d 65 46 6f 72 4d 65 74 68  tFilenameForMeth
1a60: 6f 64 4f 76 65 72 6c 6f 61 64 73 28 73 74 72 69  odOverloads(stri
1a70: 6e 67 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c  ng assemblyName,
1a80: 20 73 74 72 69 6e 67 20 74 79 70 65 49 44 2c 20   string typeID, 
1a90: 73 74 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d  string methodNam
1aa0: 65 29 20 7b 0d 0a 09 09 09 73 74 72 69 6e 67 20  e) {.....string 
1ab0: 66 69 6c 65 4e 61 6d 65 20 3d 20 47 65 74 46 69  fileName = GetFi
1ac0: 6c 65 6e 61 6d 65 46 6f 72 49 64 53 70 65 63 69  lenameForIdSpeci
1ad0: 61 6c 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c  al(assemblyName,
1ae0: 20 74 79 70 65 49 44 2c 20 22 2e 22 20 2b 20 6d   typeID, "." + m
1af0: 65 74 68 6f 64 4e 61 6d 65 2e 52 65 70 6c 61 63  ethodName.Replac
1b00: 65 28 27 60 27 2c 20 27 24 27 29 2e 52 65 70 6c  e('`', '$').Repl
1b10: 61 63 65 28 22 3c 22 2c 20 22 28 22 29 2e 52 65  ace("<", "(").Re
1b20: 70 6c 61 63 65 28 22 3e 22 2c 20 22 29 22 29 20  place(">", ")") 
1b30: 2b 20 22 7e 4f 76 65 72 6c 6f 61 64 73 22 29 3b  + "~Overloads");
1b40: 0d 0a 09 09 09 72 65 74 75 72 6e 20 66 69 6c 65  .....return file
1b50: 4e 61 6d 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09  Name;....}......
1b60: 2f 2f 20 65 78 70 6f 73 65 64 20 74 6f 20 58 53  // exposed to XS
1b70: 4c 54 0d 0a 09 09 2f 2f 2f 3c 73 75 6d 6d 61 72  LT....///<summar
1b80: 79 3e 0d 0a 09 09 2f 2f 2f 3c 2f 73 75 6d 6d 61  y>....///</summa
1b90: 72 79 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61 6d  ry>....///<param
1ba0: 20 6e 61 6d 65 3d 22 63 75 72 72 65 6e 74 41 73   name="currentAs
1bb0: 73 65 6d 62 6c 79 4e 61 6d 65 22 3e 3c 2f 70 61  semblyName"></pa
1bc0: 72 61 6d 3e 0d 0a 09 09 2f 2f 2f 3c 70 61 72 61  ram>....///<para
1bd0: 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65  m name="typeName
1be0: 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f  "></param>....//
1bf0: 2f 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75  /<returns></retu
1c00: 72 6e 73 3e 0d 0a 09 09 70 75 62 6c 69 63 20 73  rns>....public s
1c10: 74 72 69 6e 67 20 47 65 74 46 69 6c 65 6e 61 6d  tring GetFilenam
1c20: 65 46 6f 72 54 79 70 65 6e 61 6d 65 28 73 74 72  eForTypename(str
1c30: 69 6e 67 20 63 75 72 72 65 6e 74 41 73 73 65 6d  ing currentAssem
1c40: 62 6c 79 4e 61 6d 65 2c 20 73 74 72 69 6e 67 20  blyName, string 
1c50: 74 79 70 65 4e 61 6d 65 29 20 7b 0d 0a 0d 0a 09  typeName) {.....
1c60: 09 09 2f 2f 20 73 74 72 69 70 20 6c 65 61 64 69  ..// strip leadi
1c70: 6e 67 20 74 79 70 65 20 69 64 65 6e 74 69 66 69  ng type identifi
1c80: 65 72 0d 0a 09 09 09 69 66 20 28 74 79 70 65 4e  er.....if (typeN
1c90: 61 6d 65 2e 4c 65 6e 67 74 68 20 3e 20 31 20 26  ame.Length > 1 &
1ca0: 26 20 74 79 70 65 4e 61 6d 65 5b 31 5d 20 21 3d  & typeName[1] !=
1cb0: 20 27 3a 27 29 0d 0a 09 09 09 09 74 79 70 65 4e   ':')......typeN
1cc0: 61 6d 65 20 3d 20 22 54 3a 22 20 2b 20 74 79 70  ame = "T:" + typ
1cd0: 65 4e 61 6d 65 3b 0d 0a 09 09 09 73 74 72 69 6e  eName;.....strin
1ce0: 67 20 66 69 6c 65 6e 61 6d 65 20 3d 20 47 65 74  g filename = Get
1cf0: 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 63 75  FilenameForId(cu
1d00: 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d  rrentAssemblyNam
1d10: 65 2c 20 74 79 70 65 4e 61 6d 65 29 3b 0d 0a 09  e, typeName);...
1d20: 09 09 72 65 74 75 72 6e 20 66 69 6c 65 6e 61 6d  ..return filenam
1d30: 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20  e;....}......// 
1d40: 65 78 70 6f 73 65 64 0d 0a 09 09 2f 2f 2f 3c 73  exposed....///<s
1d50: 75 6d 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c 2f  ummary>....///</
1d60: 73 75 6d 6d 61 72 79 3e 0d 0a 09 09 2f 2f 2f 3c  summary>....///<
1d70: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 72  param name="curr
1d80: 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22  entAssemblyName"
1d90: 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f 2f 2f  ></param>....///
1da0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72 65  <param name="cre
1db0: 66 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 09 09 2f  f"></param>..../
1dc0: 2f 2f 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  //<param name="o
1dd0: 76 65 72 6c 6f 61 64 22 3e 3c 2f 70 61 72 61 6d  verload"></param
1de0: 3e 0d 0a 09 09 2f 2f 2f 3c 72 65 74 75 72 6e 73  >....///<returns
1df0: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 09 09 70  ></returns>....p
1e00: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74  ublic string Get
1e10: 46 69 6c 65 6e 61 6d 65 46 6f 72 43 52 65 66 4f  FilenameForCRefO
1e20: 76 65 72 6c 6f 61 64 28 73 74 72 69 6e 67 20 63  verload(string c
1e30: 75 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e 61  urrentAssemblyNa
1e40: 6d 65 2c 20 73 74 72 69 6e 67 20 63 72 65 66 2c  me, string cref,
1e50: 20 73 74 72 69 6e 67 20 6f 76 65 72 6c 6f 61 64   string overload
1e60: 29 20 7b 0d 0a 09 09 09 2f 2f 20 6c 6f 6f 6b 75  ) {.....// looku
1e70: 70 20 63 75 72 72 65 6e 74 20 61 73 73 65 6d 62  p current assemb
1e80: 6c 79 0d 0a 09 09 09 73 74 72 69 6e 67 20 66 69  ly.....string fi
1e90: 6c 65 6e 61 6d 65 20 3d 20 47 65 74 46 69 6c 65  lename = GetFile
1ea0: 6e 61 6d 65 46 6f 72 49 64 28 63 75 72 72 65 6e  nameForId(curren
1eb0: 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 63  tAssemblyName, c
1ec0: 72 65 66 29 3b 0d 0a 09 09 09 72 65 74 75 72 6e  ref);.....return
1ed0: 20 66 69 6c 65 6e 61 6d 65 3b 0d 0a 0d 0a 09 09   filename;......
1ee0: 09 23 72 65 67 69 6f 6e 20 4f 72 69 67 69 6e 61  .#region Origina
1ef0: 6c 20 58 53 4c 54 20 4c 6f 67 69 63 0d 0a 09 09  l XSLT Logic....
1f00: 09 2f 2a 0d 0a 09 09 09 09 09 3c 21 2d 2d 3c 78  ./*.......<!--<x
1f10: 73 6c 3a 63 68 6f 6f 73 65 3e 0d 0a 09 09 09 09  sl:choose>......
1f20: 09 09 3c 78 73 6c 3a 77 68 65 6e 20 74 65 73 74  ..<xsl:when test
1f30: 3d 22 73 74 61 72 74 73 2d 77 69 74 68 28 24 63  ="starts-with($c
1f40: 72 65 66 2c 20 27 54 3a 27 29 22 3e 0d 0a 09 09  ref, 'T:')">....
1f50: 09 09 09 09 09 3c 78 73 6c 3a 63 61 6c 6c 2d 74  .....<xsl:call-t
1f60: 65 6d 70 6c 61 74 65 20 6e 61 6d 65 3d 22 67 65  emplate name="ge
1f70: 74 2d 66 69 6c 65 6e 61 6d 65 2d 66 6f 72 2d 74  t-filename-for-t
1f80: 79 70 65 2d 6e 61 6d 65 22 3e 0d 0a 09 09 09 09  ype-name">......
1f90: 09 09 09 09 3c 78 73 6c 3a 77 69 74 68 2d 70 61  ....<xsl:with-pa
1fa0: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 2d 6e  ram name="type-n
1fb0: 61 6d 65 22 20 73 65 6c 65 63 74 3d 22 73 75 62  ame" select="sub
1fc0: 73 74 72 69 6e 67 2d 61 66 74 65 72 28 24 63 72  string-after($cr
1fd0: 65 66 2c 20 27 54 3a 27 29 22 20 2f 3e 0d 0a 09  ef, 'T:')" />...
1fe0: 09 09 09 09 09 09 3c 2f 78 73 6c 3a 63 61 6c 6c  ......</xsl:call
1ff0: 2d 74 65 6d 70 6c 61 74 65 3e 0d 0a 09 09 09 09  -template>......
2000: 09 09 3c 2f 78 73 6c 3a 77 68 65 6e 3e 0d 0a 09  ..</xsl:when>...
2010: 09 09 09 09 09 3c 78 73 6c 3a 77 68 65 6e 20 74  .....<xsl:when t
2020: 65 73 74 3d 22 73 74 61 72 74 73 2d 77 69 74 68  est="starts-with
2030: 28 24 63 72 65 66 2c 20 27 4d 3a 27 29 22 3e 0d  ($cref, 'M:')">.
2040: 0a 09 09 09 09 09 09 09 3c 78 73 6c 3a 63 68 6f  ........<xsl:cho
2050: 6f 73 65 3e 0d 0a 09 09 09 09 09 09 09 09 3c 78  ose>..........<x
2060: 73 6c 3a 77 68 65 6e 20 74 65 73 74 3d 22 63 6f  sl:when test="co
2070: 6e 74 61 69 6e 73 28 24 63 72 65 66 2c 20 27 2e  ntains($cref, '.
2080: 23 63 27 29 22 3e 0d 0a 09 09 09 09 09 09 09 09  #c')">..........
2090: 09 3c 78 73 6c 3a 76 61 6c 75 65 2d 6f 66 20 73  .<xsl:value-of s
20a0: 65 6c 65 63 74 3d 22 63 6f 6e 63 61 74 28 74 72  elect="concat(tr
20b0: 61 6e 73 6c 61 74 65 28 73 75 62 73 74 72 69 6e  anslate(substrin
20c0: 67 2d 61 66 74 65 72 28 73 75 62 73 74 72 69 6e  g-after(substrin
20d0: 67 2d 62 65 66 6f 72 65 28 24 63 72 65 66 2c 20  g-before($cref, 
20e0: 27 2e 23 63 27 29 2c 20 27 4d 3a 27 29 2c 20 27  '.#c'), 'M:'), '
20f0: 5b 2c 5d 27 2c 20 27 27 29 2c 20 27 43 6f 6e 73  [,]', ''), 'Cons
2100: 74 72 75 63 74 6f 72 27 2c 20 24 6f 76 65 72 6c  tructor', $overl
2110: 6f 61 64 2c 20 27 2e 68 74 6d 6c 27 29 22 20 2f  oad, '.html')" /
2120: 3e 0d 0a 09 09 09 09 09 09 09 09 3c 2f 78 73 6c  >..........</xsl
2130: 3a 77 68 65 6e 3e 0d 0a 09 09 09 09 09 09 09 09  :when>..........
2140: 3c 78 73 6c 3a 77 68 65 6e 20 74 65 73 74 3d 22  <xsl:when test="
2150: 63 6f 6e 74 61 69 6e 73 28 24 63 72 65 66 2c 20  contains($cref, 
2160: 27 28 27 29 22 3e 0d 0a 09 09 09 09 09 09 09 09  '(')">..........
2170: 09 3c 78 73 6c 3a 63 68 6f 6f 73 65 3e 0d 0a 09  .<xsl:choose>...
2180: 09 09 09 09 09 09 09 09 09 3c 78 73 6c 3a 77 68  .........<xsl:wh
2190: 65 6e 20 74 65 73 74 3d 22 73 74 72 69 6e 67 2d  en test="string-
21a0: 6c 65 6e 67 74 68 28 24 6f 76 65 72 6c 6f 61 64  length($overload
21b0: 29 20 26 67 74 3b 20 30 22 3e 0d 0a 09 09 09 09  ) &gt; 0">......
21c0: 09 09 09 09 09 09 09 3c 78 73 6c 3a 76 61 6c 75  .......<xsl:valu
21d0: 65 2d 6f 66 20 73 65 6c 65 63 74 3d 22 63 6f 6e  e-of select="con
21e0: 63 61 74 28 74 72 61 6e 73 6c 61 74 65 28 73 75  cat(translate(su
21f0: 62 73 74 72 69 6e 67 2d 61 66 74 65 72 28 73 75  bstring-after(su
2200: 62 73 74 72 69 6e 67 2d 62 65 66 6f 72 65 28 24  bstring-before($
2210: 63 72 65 66 2c 20 27 28 27 29 2c 20 27 4d 3a 27  cref, '('), 'M:'
2220: 29 2c 20 27 5b 2c 5d 27 2c 20 27 27 29 2c 20 27  ), '[,]', ''), '
2230: 5f 6f 76 65 72 6c 6f 61 64 5f 27 2c 20 24 6f 76  _overload_', $ov
2240: 65 72 6c 6f 61 64 2c 20 27 2e 68 74 6d 6c 27 29  erload, '.html')
2250: 22 20 2f 3e 0d 0a 09 09 09 09 09 09 09 09 09 09  " />............
2260: 3c 2f 78 73 6c 3a 77 68 65 6e 3e 0d 0a 09 09 09  </xsl:when>.....
2270: 09 09 09 09 09 09 09 3c 78 73 6c 3a 6f 74 68 65  .......<xsl:othe
2280: 72 77 69 73 65 3e 0d 0a 09 09 09 09 09 09 09 09  rwise>..........
2290: 09 09 09 3c 78 73 6c 3a 76 61 6c 75 65 2d 6f 66  ...<xsl:value-of
22a0: 20 73 65 6c 65 63 74 3d 22 63 6f 6e 63 61 74 28   select="concat(
22b0: 74 72 61 6e 73 6c 61 74 65 28 73 75 62 73 74 72  translate(substr
22c0: 69 6e 67 2d 61 66 74 65 72 28 73 75 62 73 74 72  ing-after(substr
22d0: 69 6e 67 2d 62 65 66 6f 72 65 28 24 63 72 65 66  ing-before($cref
22e0: 2c 20 27 28 27 29 2c 20 27 4d 3a 27 29 2c 20 27  , '('), 'M:'), '
22f0: 5b 2c 5d 27 2c 20 27 27 29 2c 20 27 2e 68 74 6d  [,]', ''), '.htm
2300: 6c 27 29 22 20 2f 3e 0d 0a 09 09 09 09 09 09 09  l')" />.........
2310: 09 09 09 3c 2f 78 73 6c 3a 6f 74 68 65 72 77 69  ...</xsl:otherwi
2320: 73 65 3e 0d 0a 09 09 09 09 09 09 09 09 09 3c 2f  se>...........</
2330: 78 73 6c 3a 63 68 6f 6f 73 65 3e 0d 0a 09 09 09  xsl:choose>.....
2340: 09 09 09 09 09 3c 2f 78 73 6c 3a 77 68 65 6e 3e  .....</xsl:when>
2350: 0d 0a 09 09 09 09 09 09 09 09 3c 78 73 6c 3a 6f  ..........<xsl:o
2360: 74 68 65 72 77 69 73 65 3e 0d 0a 09 09 09 09 09  therwise>.......
2370: 09 09 09 09 3c 78 73 6c 3a 63 68 6f 6f 73 65 3e  ....<xsl:choose>
2380: 0d 0a 09 09 09 09 09 09 09 09 09 09 3c 78 73 6c  ............<xsl
2390: 3a 77 68 65 6e 20 74 65 73 74 3d 22 73 74 72 69  :when test="stri
23a0: 6e 67 2d 6c 65 6e 67 74 68 28 24 6f 76 65 72 6c  ng-length($overl
23b0: 6f 61 64 29 20 26 67 74 3b 20 30 22 3e 0d 0a 09  oad) &gt; 0">...
23c0: 09 09 09 09 09 09 09 09 09 09 3c 78 73 6c 3a 76  ..........<xsl:v
23d0: 61 6c 75 65 2d 6f 66 20 73 65 6c 65 63 74 3d 22  alue-of select="
23e0: 63 6f 6e 63 61 74 28 74 72 61 6e 73 6c 61 74 65  concat(translate
23f0: 28 73 75 62 73 74 72 69 6e 67 2d 61 66 74 65 72  (substring-after
2400: 28 24 63 72 65 66 2c 20 27 4d 3a 27 29 2c 20 27  ($cref, 'M:'), '
2410: 5b 2c 5d 27 2c 20 27 27 29 2c 20 27 5f 6f 76 65  [,]', ''), '_ove
2420: 72 6c 6f 61 64 5f 27 2c 20 24 6f 76 65 72 6c 6f  rload_', $overlo
2430: 61 64 2c 20 27 2e 68 74 6d 6c 27 29 22 20 2f 3e  ad, '.html')" />
2440: 0d 0a 09 09 09 09 09 09 09 09 09 09 3c 2f 78 73  ............</xs
2450: 6c 3a 77 68 65 6e 3e 0d 0a 09 09 09 09 09 09 09  l:when>.........
2460: 09 09 09 3c 78 73 6c 3a 6f 74 68 65 72 77 69 73  ...<xsl:otherwis
2470: 65 3e 0d 0a 09 09 09 09 09 09 09 09 09 09 09 3c  e>.............<
2480: 78 73 6c 3a 76 61 6c 75 65 2d 6f 66 20 73 65 6c  xsl:value-of sel
2490: 65 63 74 3d 22 63 6f 6e 63 61 74 28 74 72 61 6e  ect="concat(tran
24a0: 73 6c 61 74 65 28 73 75 62 73 74 72 69 6e 67 2d  slate(substring-
24b0: 61 66 74 65 72 28 24 63 72 65 66 2c 20 27 4d 3a  after($cref, 'M:
24c0: 27 29 2c 20 27 5b 2c 5d 27 2c 20 27 27 29 2c 20  '), '[,]', ''), 
24d0: 27 2e 68 74 6d 6c 27 29 22 20 2f 3e 0d 0a 09 09  '.html')" />....
24e0: 09 09 09 09 09 09 09 09 3c 2f 78 73 6c 3a 6f 74  ........</xsl:ot
24f0: 68 65 72 77 69 73 65 3e 0d 0a 09 09 09 09 09 09  herwise>........
2500: 09 09 09 3c 2f 78 73 6c 3a 63 68 6f 6f 73 65 3e  ...</xsl:choose>
2510: 0d 0a 09 09 09 09 09 09 09 09 3c 2f 78 73 6c 3a  ..........</xsl:
2520: 6f 74 68 65 72 77 69 73 65 3e 0d 0a 09 09 09 09  otherwise>......
2530: 09 09 09 3c 2f 78 73 6c 3a 63 68 6f 6f 73 65 3e  ...</xsl:choose>
2540: 0d 0a 09 09 09 09 09 09 3c 2f 78 73 6c 3a 77 68  ........</xsl:wh
2550: 65 6e 3e 0d 0a 09 09 09 09 09 09 3c 78 73 6c 3a  en>........<xsl:
2560: 77 68 65 6e 20 74 65 73 74 3d 22 73 74 61 72 74  when test="start
2570: 73 2d 77 69 74 68 28 24 63 72 65 66 2c 20 27 45  s-with($cref, 'E
2580: 3a 27 29 22 3e 0d 0a 09 09 09 09 09 09 09 3c 78  :')">.........<x
2590: 73 6c 3a 76 61 6c 75 65 2d 6f 66 20 73 65 6c 65  sl:value-of sele
25a0: 63 74 3d 22 63 6f 6e 63 61 74 28 74 72 61 6e 73  ct="concat(trans
25b0: 6c 61 74 65 28 73 75 62 73 74 72 69 6e 67 2d 61  late(substring-a
25c0: 66 74 65 72 28 24 63 72 65 66 2c 20 27 45 3a 27  fter($cref, 'E:'
25d0: 29 2c 20 27 5b 2c 5d 27 2c 20 27 27 29 2c 20 24  ), '[,]', ''), $
25e0: 6f 76 65 72 6c 6f 61 64 2c 20 27 2e 68 74 6d 6c  overload, '.html
25f0: 27 29 22 20 2f 3e 0d 0a 09 09 09 09 09 09 3c 2f  ')" />........</
2600: 78 73 6c 3a 77 68 65 6e 3e 0d 0a 09 09 09 09 09  xsl:when>.......
2610: 09 3c 78 73 6c 3a 77 68 65 6e 20 74 65 73 74 3d  .<xsl:when test=
2620: 22 73 74 61 72 74 73 2d 77 69 74 68 28 24 63 72  "starts-with($cr
2630: 65 66 2c 20 27 46 3a 27 29 22 3e 0d 0a 09 09 09  ef, 'F:')">.....
2640: 09 09 09 09 3c 78 73 6c 3a 76 61 72 69 61 62 6c  ....<xsl:variabl
2650: 65 20 6e 61 6d 65 3d 22 65 6e 75 6d 22 20 73 65  e name="enum" se
2660: 6c 65 63 74 3d 22 2f 6e 64 6f 63 2f 61 73 73 65  lect="/ndoc/asse
2670: 6d 62 6c 79 2f 6d 6f 64 75 6c 65 2f 6e 61 6d 65  mbly/module/name
2680: 73 70 61 63 65 2f 2f 65 6e 75 6d 65 72 61 74 69  space//enumerati
2690: 6f 6e 5b 66 69 65 6c 64 2f 40 69 64 20 3d 20 24  on[field/@id = $
26a0: 63 72 65 66 5d 22 20 2f 3e 0d 0a 09 09 09 09 09  cref]" />.......
26b0: 09 09 3c 78 73 6c 3a 63 68 6f 6f 73 65 3e 0d 0a  ..<xsl:choose>..
26c0: 09 09 09 09 09 09 09 09 3c 78 73 6c 3a 77 68 65  ........<xsl:whe
26d0: 6e 20 74 65 73 74 3d 22 24 65 6e 75 6d 22 3e 0d  n test="$enum">.
26e0: 0a 09 09 09 09 09 09 09 09 09 3c 78 73 6c 3a 63  ..........<xsl:c
26f0: 61 6c 6c 2d 74 65 6d 70 6c 61 74 65 20 6e 61 6d  all-template nam
2700: 65 3d 22 67 65 74 2d 66 69 6c 65 6e 61 6d 65 2d  e="get-filename-
2710: 66 6f 72 2d 74 79 70 65 2d 6e 61 6d 65 22 3e 0d  for-type-name">.
2720: 0a 09 09 09 09 09 09 09 09 09 09 3c 78 73 6c 3a  ...........<xsl:
2730: 77 69 74 68 2d 70 61 72 61 6d 20 6e 61 6d 65 3d  with-param name=
2740: 22 74 79 70 65 2d 6e 61 6d 65 22 20 73 65 6c 65  "type-name" sele
2750: 63 74 3d 22 73 75 62 73 74 72 69 6e 67 2d 61 66  ct="substring-af
2760: 74 65 72 28 24 65 6e 75 6d 2f 40 69 64 2c 20 27  ter($enum/@id, '
2770: 54 3a 27 29 22 20 2f 3e 0d 0a 09 09 09 09 09 09  T:')" />........
2780: 09 09 09 3c 2f 78 73 6c 3a 63 61 6c 6c 2d 74 65  ...</xsl:call-te
2790: 6d 70 6c 61 74 65 3e 0d 0a 09 09 09 09 09 09 09  mplate>.........
27a0: 09 3c 2f 78 73 6c 3a 77 68 65 6e 3e 0d 0a 09 09  .</xsl:when>....
27b0: 09 09 09 09 09 09 3c 78 73 6c 3a 6f 74 68 65 72  ......<xsl:other
27c0: 77 69 73 65 3e 0d 0a 09 09 09 09 09 09 09 09 09  wise>...........
27d0: 3c 78 73 6c 3a 76 61 6c 75 65 2d 6f 66 20 73 65  <xsl:value-of se
27e0: 6c 65 63 74 3d 22 63 6f 6e 63 61 74 28 74 72 61  lect="concat(tra
27f0: 6e 73 6c 61 74 65 28 73 75 62 73 74 72 69 6e 67  nslate(substring
2800: 2d 61 66 74 65 72 28 24 63 72 65 66 2c 20 27 46  -after($cref, 'F
2810: 3a 27 29 2c 20 27 5b 2c 5d 27 2c 20 27 27 29 2c  :'), '[,]', ''),
2820: 20 24 6f 76 65 72 6c 6f 61 64 2c 20 27 2e 68 74   $overload, '.ht
2830: 6d 6c 27 29 22 20 2f 3e 0d 0a 09 09 09 09 09 09  ml')" />........
2840: 09 09 3c 2f 78 73 6c 3a 6f 74 68 65 72 77 69 73  ..</xsl:otherwis
2850: 65 3e 0d 0a 09 09 09 09 09 09 09 3c 2f 78 73 6c  e>.........</xsl
2860: 3a 63 68 6f 6f 73 65 3e 0d 0a 09 09 09 09 09 09  :choose>........
2870: 3c 2f 78 73 6c 3a 77 68 65 6e 3e 0d 0a 09 09 09  </xsl:when>.....
2880: 09 09 09 3c 78 73 6c 3a 77 68 65 6e 20 74 65 73  ...<xsl:when tes
2890: 74 3d 22 73 74 61 72 74 73 2d 77 69 74 68 28 24  t="starts-with($
28a0: 63 72 65 66 2c 20 27 50 3a 27 29 22 3e 0d 0a 09  cref, 'P:')">...
28b0: 09 09 09 09 09 09 3c 78 73 6c 3a 63 68 6f 6f 73  ......<xsl:choos
28c0: 65 3e 0d 0a 09 09 09 09 09 09 09 09 3c 78 73 6c  e>..........<xsl
28d0: 3a 77 68 65 6e 20 74 65 73 74 3d 22 63 6f 6e 74  :when test="cont
28e0: 61 69 6e 73 28 24 63 72 65 66 2c 20 27 28 27 29  ains($cref, '(')
28f0: 22 3e 0d 0a 09 09 09 09 09 09 09 09 09 3c 78 73  ">...........<xs
2900: 6c 3a 76 61 6c 75 65 2d 6f 66 20 73 65 6c 65 63  l:value-of selec
2910: 74 3d 22 63 6f 6e 63 61 74 28 74 72 61 6e 73 6c  t="concat(transl
2920: 61 74 65 28 73 75 62 73 74 72 69 6e 67 2d 61 66  ate(substring-af
2930: 74 65 72 28 73 75 62 73 74 72 69 6e 67 2d 62 65  ter(substring-be
2940: 66 6f 72 65 28 24 63 72 65 66 2c 20 27 28 27 29  fore($cref, '(')
2950: 2c 20 27 50 3a 27 29 2c 20 27 5b 2c 5d 27 2c 20  , 'P:'), '[,]', 
2960: 27 27 29 2c 20 24 6f 76 65 72 6c 6f 61 64 2c 20  ''), $overload, 
2970: 27 2e 68 74 6d 6c 27 29 22 20 2f 3e 0d 0a 09 09  '.html')" />....
2980: 09 09 09 09 09 09 3c 2f 78 73 6c 3a 77 68 65 6e  ......</xsl:when
2990: 3e 0d 0a 09 09 09 09 09 09 09 09 3c 78 73 6c 3a  >..........<xsl:
29a0: 6f 74 68 65 72 77 69 73 65 3e 0d 0a 09 09 09 09  otherwise>......
29b0: 09 09 09 09 09 3c 78 73 6c 3a 76 61 6c 75 65 2d  .....<xsl:value-
29c0: 6f 66 20 73 65 6c 65 63 74 3d 22 63 6f 6e 63 61  of select="conca
29d0: 74 28 74 72 61 6e 73 6c 61 74 65 28 73 75 62 73  t(translate(subs
29e0: 74 72 69 6e 67 2d 61 66 74 65 72 28 24 63 72 65  tring-after($cre
29f0: 66 2c 20 27 50 3a 27 29 2c 20 27 5b 2c 5d 27 2c  f, 'P:'), '[,]',
2a00: 20 27 27 29 2c 20 24 6f 76 65 72 6c 6f 61 64 2c   ''), $overload,
2a10: 20 27 2e 68 74 6d 6c 27 29 22 20 2f 3e 0d 0a 09   '.html')" />...
2a20: 09 09 09 09 09 09 09 3c 2f 78 73 6c 3a 6f 74 68  .......</xsl:oth
2a30: 65 72 77 69 73 65 3e 0d 0a 09 09 09 09 09 09 09  erwise>.........
2a40: 3c 2f 78 73 6c 3a 63 68 6f 6f 73 65 3e 0d 0a 09  </xsl:choose>...
2a50: 09 09 09 09 09 3c 2f 78 73 6c 3a 77 68 65 6e 3e  .....</xsl:when>
2a60: 0d 0a 09 09 09 09 09 09 3c 78 73 6c 3a 6f 74 68  ........<xsl:oth
2a70: 65 72 77 69 73 65 3e 0d 0a 09 09 09 09 09 09 09  erwise>.........
2a80: 3c 78 73 6c 3a 76 61 6c 75 65 2d 6f 66 20 73 65  <xsl:value-of se
2a90: 6c 65 63 74 3d 22 24 63 72 65 66 22 20 2f 3e 0d  lect="$cref" />.
2aa0: 0a 09 09 09 09 09 09 3c 2f 78 73 6c 3a 6f 74 68  .......</xsl:oth
2ab0: 65 72 77 69 73 65 3e 0d 0a 09 09 09 09 09 3c 2f  erwise>.......</
2ac0: 78 73 6c 3a 63 68 6f 6f 73 65 3e 2d 2d 3e 0d 0a  xsl:choose>-->..
2ad0: 09 09 09 2a 2f 0d 0a 09 09 09 23 65 6e 64 72 65  ...*/.....#endre
2ae0: 67 69 6f 6e 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 23  gion....}......#
2af0: 72 65 67 69 6f 6e 20 42 75 69 6c 64 4e 61 6d 65  region BuildName
2b00: 54 61 62 6c 65 73 0d 0a 0d 0a 09 09 70 72 69 76  Tables......priv
2b10: 61 74 65 20 76 6f 69 64 20 42 75 69 6c 64 4e 61  ate void BuildNa
2b20: 6d 65 54 61 62 6c 65 73 28 58 6d 6c 44 6f 63 75  meTables(XmlDocu
2b30: 6d 65 6e 74 20 78 6d 6c 44 6f 63 75 6d 65 6e 74  ment xmlDocument
2b40: 61 74 69 6f 6e 2c 20 62 6f 6f 6c 20 6d 65 72 67  ation, bool merg
2b50: 65 4e 61 6d 65 73 70 61 63 65 73 29 20 7b 0d 0a  eNamespaces) {..
2b60: 09 09 09 58 6d 6c 4e 61 6d 65 73 70 61 63 65 4d  ...XmlNamespaceM
2b70: 61 6e 61 67 65 72 20 6e 73 6d 67 72 20 3d 20 6e  anager nsmgr = n
2b80: 65 77 20 58 6d 6c 4e 61 6d 65 73 70 61 63 65 4d  ew XmlNamespaceM
2b90: 61 6e 61 67 65 72 28 78 6d 6c 44 6f 63 75 6d 65  anager(xmlDocume
2ba0: 6e 74 61 74 69 6f 6e 2e 4e 61 6d 65 54 61 62 6c  ntation.NameTabl
2bb0: 65 29 3b 0d 0a 09 09 09 6e 73 6d 67 72 2e 41 64  e);.....nsmgr.Ad
2bc0: 64 4e 61 6d 65 73 70 61 63 65 28 22 6e 73 22 2c  dNamespace("ns",
2bd0: 20 22 75 72 6e 3a 6e 64 6f 63 2d 73 63 68 65 6d   "urn:ndoc-schem
2be0: 61 22 29 3b 0d 0a 09 09 09 58 6d 6c 4e 6f 64 65  a");.....XmlNode
2bf0: 4c 69 73 74 20 61 73 73 65 6d 62 6c 69 65 73 20  List assemblies 
2c00: 3d 20 78 6d 6c 44 6f 63 75 6d 65 6e 74 61 74 69  = xmlDocumentati
2c10: 6f 6e 2e 53 65 6c 65 63 74 4e 6f 64 65 73 28 22  on.SelectNodes("
2c20: 2f 6e 73 3a 6e 64 6f 63 2f 6e 73 3a 61 73 73 65  /ns:ndoc/ns:asse
2c30: 6d 62 6c 79 22 2c 20 6e 73 6d 67 72 29 3b 0d 0a  mbly", nsmgr);..
2c40: 09 09 09 69 66 28 61 73 73 65 6d 62 6c 69 65 73  ...if(assemblies
2c50: 20 3d 3d 20 6e 75 6c 6c 29 20 74 68 72 6f 77 20   == null) throw 
2c60: 6e 65 77 20 45 78 63 65 70 74 69 6f 6e 28 22 4e  new Exception("N
2c70: 6f 20 61 73 73 65 6d 62 6c 69 65 73 20 66 6f 75  o assemblies fou
2c80: 6e 64 22 29 3b 0d 0a 09 09 09 66 6f 72 65 61 63  nd");.....foreac
2c90: 68 20 28 58 6d 6c 45 6c 65 6d 65 6e 74 20 61 73  h (XmlElement as
2ca0: 73 65 6d 62 6c 79 4e 6f 64 65 20 69 6e 20 61 73  semblyNode in as
2cb0: 73 65 6d 62 6c 69 65 73 29 20 7b 0d 0a 09 09 09  semblies) {.....
2cc0: 09 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79  .string assembly
2cd0: 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64 65 4e 61  Name = GetNodeNa
2ce0: 6d 65 28 61 73 73 65 6d 62 6c 79 4e 6f 64 65 29  me(assemblyNode)
2cf0: 3b 0d 0a 09 09 09 09 52 65 67 69 73 74 65 72 41  ;......RegisterA
2d00: 73 73 65 6d 62 6c 79 28 61 73 73 65 6d 62 6c 79  ssembly(assembly
2d10: 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09 09 2f 2f  Name);........//
2d20: 20 62 75 69 6c 64 20 6c 69 73 74 20 6f 66 20 61   build list of a
2d30: 73 73 65 6d 62 6c 79 52 65 66 65 72 65 6e 63 65  ssemblyReference
2d40: 73 0d 0a 09 09 09 09 58 6d 6c 4e 6f 64 65 4c 69  s......XmlNodeLi
2d50: 73 74 20 61 73 73 65 6d 62 6c 79 52 65 66 65 72  st assemblyRefer
2d60: 65 6e 63 65 4e 6f 64 65 73 20 3d 20 61 73 73 65  enceNodes = asse
2d70: 6d 62 6c 79 4e 6f 64 65 2e 53 65 6c 65 63 74 4e  mblyNode.SelectN
2d80: 6f 64 65 73 28 22 6e 73 3a 61 73 73 65 6d 62 6c  odes("ns:assembl
2d90: 79 52 65 66 65 72 65 6e 63 65 22 2c 20 6e 73 6d  yReference", nsm
2da0: 67 72 29 3b 0d 0a 09 09 09 09 69 66 28 61 73 73  gr);......if(ass
2db0: 65 6d 62 6c 79 52 65 66 65 72 65 6e 63 65 4e 6f  emblyReferenceNo
2dc0: 64 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 74 68 72  des == null) thr
2dd0: 6f 77 20 6e 65 77 20 45 78 63 65 70 74 69 6f 6e  ow new Exception
2de0: 28 22 4e 6f 20 61 73 73 65 6d 62 6c 79 20 72 65  ("No assembly re
2df0: 66 65 72 65 6e 63 65 20 6e 6f 64 65 73 20 66 6f  ference nodes fo
2e00: 75 6e 64 22 29 3b 0d 0a 09 09 09 09 4c 69 73 74  und");......List
2e10: 3c 73 74 72 69 6e 67 3e 20 61 73 73 65 6d 62 6c  <string> assembl
2e20: 79 52 65 66 65 72 65 6e 63 65 4e 61 6d 65 73 20  yReferenceNames 
2e30: 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e  = new List<strin
2e40: 67 3e 28 29 3b 0d 0a 09 09 09 09 66 6f 72 65 61  g>();......forea
2e50: 63 68 20 28 58 6d 6c 4e 6f 64 65 20 61 73 73 65  ch (XmlNode asse
2e60: 6d 62 6c 79 52 65 66 65 72 65 6e 63 65 4e 6f 64  mblyReferenceNod
2e70: 65 20 69 6e 20 61 73 73 65 6d 62 6c 79 52 65 66  e in assemblyRef
2e80: 65 72 65 6e 63 65 4e 6f 64 65 73 29 20 7b 0d 0a  erenceNodes) {..
2e90: 09 09 09 09 09 61 73 73 65 6d 62 6c 79 52 65 66  .....assemblyRef
2ea0: 65 72 65 6e 63 65 4e 61 6d 65 73 2e 41 64 64 28  erenceNames.Add(
2eb0: 47 65 74 4e 6f 64 65 4e 61 6d 65 28 61 73 73 65  GetNodeName(asse
2ec0: 6d 62 6c 79 52 65 66 65 72 65 6e 63 65 4e 6f 64  mblyReferenceNod
2ed0: 65 29 29 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 09  e));......}.....
2ee0: 09 61 73 73 65 6d 62 6c 79 52 65 66 65 72 65 6e  .assemblyReferen
2ef0: 63 65 73 2e 41 64 64 28 61 73 73 65 6d 62 6c 79  ces.Add(assembly
2f00: 4e 61 6d 65 2c 20 61 73 73 65 6d 62 6c 79 52 65  Name, assemblyRe
2f10: 66 65 72 65 6e 63 65 4e 61 6d 65 73 2e 54 6f 41  ferenceNames.ToA
2f20: 72 72 61 79 28 29 29 3b 0d 0a 0d 0a 09 09 09 09  rray());........
2f30: 2f 2f 20 66 6f 72 65 61 63 68 20 6e 61 6d 65 73  // foreach names
2f40: 70 61 63 65 0d 0a 09 09 09 09 58 6d 6c 4e 6f 64  pace......XmlNod
2f50: 65 4c 69 73 74 20 6e 61 6d 65 73 70 61 63 65 73  eList namespaces
2f60: 20 3d 20 61 73 73 65 6d 62 6c 79 4e 6f 64 65 2e   = assemblyNode.
2f70: 53 65 6c 65 63 74 4e 6f 64 65 73 28 22 6e 73 3a  SelectNodes("ns:
2f80: 6d 6f 64 75 6c 65 2f 6e 73 3a 6e 61 6d 65 73 70  module/ns:namesp
2f90: 61 63 65 22 2c 20 6e 73 6d 67 72 29 3b 0d 0a 09  ace", nsmgr);...
2fa0: 09 09 09 69 66 28 6e 61 6d 65 73 70 61 63 65 73  ...if(namespaces
2fb0: 20 3d 3d 20 6e 75 6c 6c 29 20 74 68 72 6f 77 20   == null) throw 
2fc0: 6e 65 77 20 45 78 63 65 70 74 69 6f 6e 28 22 4e  new Exception("N
2fd0: 6f 20 6e 61 6d 65 73 70 61 63 65 73 20 66 6f 75  o namespaces fou
2fe0: 6e 64 22 29 3b 0d 0a 09 09 09 09 66 6f 72 65 61  nd");......forea
2ff0: 63 68 20 28 58 6d 6c 45 6c 65 6d 65 6e 74 20 6e  ch (XmlElement n
3000: 61 6d 65 73 70 61 63 65 4e 6f 64 65 20 69 6e 20  amespaceNode in 
3010: 6e 61 6d 65 73 70 61 63 65 73 29 20 7b 0d 0a 09  namespaces) {...
3020: 09 09 09 09 73 74 72 69 6e 67 20 6e 61 6d 65 73  ....string names
3030: 70 61 63 65 4e 61 6d 65 20 3d 20 47 65 74 4e 6f  paceName = GetNo
3040: 64 65 4e 61 6d 65 28 6e 61 6d 65 73 70 61 63 65  deName(namespace
3050: 4e 6f 64 65 29 3b 0d 0a 09 09 09 09 09 2f 2f 20  Node);.......// 
3060: 72 65 67 69 73 74 65 72 20 6e 61 6d 65 73 70 61  register namespa
3070: 63 65 0d 0a 09 09 09 09 09 52 65 67 69 73 74 65  ce.......Registe
3080: 72 4e 61 6d 65 73 70 61 63 65 28 28 6d 65 72 67  rNamespace((merg
3090: 65 4e 61 6d 65 73 70 61 63 65 73 20 3f 20 73 74  eNamespaces ? st
30a0: 72 69 6e 67 2e 45 6d 70 74 79 20 3a 20 61 73 73  ring.Empty : ass
30b0: 65 6d 62 6c 79 4e 61 6d 65 29 2c 20 6e 61 6d 65  emblyName), name
30c0: 73 70 61 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 09  spaceName);.....
30d0: 09 09 09 09 58 6d 6c 4e 6f 64 65 4c 69 73 74 20  ....XmlNodeList 
30e0: 74 79 70 65 73 20 3d 20 6e 61 6d 65 73 70 61 63  types = namespac
30f0: 65 4e 6f 64 65 2e 53 65 6c 65 63 74 4e 6f 64 65  eNode.SelectNode
3100: 73 28 22 2a 5b 40 69 64 5d 22 2c 20 6e 73 6d 67  s("*[@id]", nsmg
3110: 72 29 3b 0d 0a 09 09 09 09 09 69 66 28 74 79 70  r);.......if(typ
3120: 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 74 68 72 6f  es == null) thro
3130: 77 20 6e 65 77 20 45 78 63 65 70 74 69 6f 6e 28  w new Exception(
3140: 22 4e 6f 20 74 79 70 65 73 20 66 6f 75 6e 64 22  "No types found"
3150: 29 3b 0d 0a 09 09 09 09 09 66 6f 72 65 61 63 68  );.......foreach
3160: 20 28 58 6d 6c 45 6c 65 6d 65 6e 74 20 74 79 70   (XmlElement typ
3170: 65 4e 6f 64 65 20 69 6e 20 74 79 70 65 73 29 20  eNode in types) 
3180: 7b 0d 0a 09 09 09 09 09 09 73 74 72 69 6e 67 20  {........string 
3190: 74 79 70 65 49 64 20 3d 20 47 65 74 4e 6f 64 65  typeId = GetNode
31a0: 49 64 28 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 09  Id(typeNode);...
31b0: 09 09 09 09 09 2f 2f 54 4f 44 4f 20 54 68 65 20  .....//TODO The 
31c0: 72 65 73 74 20 73 68 6f 75 6c 64 20 61 6c 73 6f  rest should also
31d0: 20 75 73 65 20 64 69 73 70 6c 61 79 4e 61 6d 65   use displayName
31e0: 20 28 28 45 45 29 3a 20 63 6c 61 72 69 66 79 20   ((EE): clarify 
31f0: 77 68 61 74 20 61 62 6f 76 65 20 6c 69 6e 65 20  what above line 
3200: 6d 65 61 6e 73 20 2d 20 73 68 61 6c 6c 20 77 65  means - shall we
3210: 20 72 65 6d 6f 76 65 20 27 6e 61 6d 65 27 20 61   remove 'name' a
3220: 74 74 72 69 62 75 74 65 20 74 68 65 6e 3f 29 0d  ttribute then?).
3230: 0a 09 09 09 09 09 09 73 74 72 69 6e 67 20 74 79  .......string ty
3240: 70 65 44 69 73 70 6c 61 79 4e 61 6d 65 20 3d 20  peDisplayName = 
3250: 47 65 74 4e 6f 64 65 44 69 73 70 6c 61 79 4e 61  GetNodeDisplayNa
3260: 6d 65 28 74 79 70 65 4e 6f 64 65 29 3b 0d 0a 09  me(typeNode);...
3270: 09 09 09 09 09 52 65 67 69 73 74 65 72 54 79 70  .....RegisterTyp
3280: 65 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  e(assemblyName, 
3290: 74 79 70 65 49 64 2c 20 74 79 70 65 44 69 73 70  typeId, typeDisp
32a0: 6c 61 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 09 09 09  layName);.......
32b0: 09 09 09 2f 2f 20 66 6f 72 65 61 63 68 20 6d 65  ...// foreach me
32c0: 6d 62 65 72 0d 0a 09 09 09 09 09 09 58 6d 6c 4e  mber........XmlN
32d0: 6f 64 65 4c 69 73 74 20 6d 65 6d 62 65 72 73 20  odeList members 
32e0: 3d 20 74 79 70 65 4e 6f 64 65 2e 53 65 6c 65 63  = typeNode.Selec
32f0: 74 4e 6f 64 65 73 28 22 2a 5b 40 69 64 5d 22 29  tNodes("*[@id]")
3300: 3b 0d 0a 09 09 09 09 09 09 69 66 28 6d 65 6d 62  ;........if(memb
3310: 65 72 73 20 3d 3d 20 6e 75 6c 6c 29 20 74 68 72  ers == null) thr
3320: 6f 77 20 6e 65 77 20 45 78 63 65 70 74 69 6f 6e  ow new Exception
3330: 28 22 4e 6f 20 74 79 70 65 20 6d 65 6d 62 65 72  ("No type member
3340: 73 20 66 6f 75 6e 64 22 29 3b 0d 0a 09 09 09 09  s found");......
3350: 09 09 66 6f 72 65 61 63 68 20 28 58 6d 6c 45 6c  ..foreach (XmlEl
3360: 65 6d 65 6e 74 20 6d 65 6d 62 65 72 4e 6f 64 65  ement memberNode
3370: 20 69 6e 20 6d 65 6d 62 65 72 73 29 20 7b 0d 0a   in members) {..
3380: 09 09 09 09 09 09 09 73 74 72 69 6e 67 20 6d 65  .......string me
3390: 6d 62 65 72 49 64 20 3d 20 47 65 74 4e 6f 64 65  mberId = GetNode
33a0: 49 64 28 6d 65 6d 62 65 72 4e 6f 64 65 29 3b 0d  Id(memberNode);.
33b0: 0a 09 09 09 09 09 09 09 73 77 69 74 63 68 20 28  ........switch (
33c0: 6d 65 6d 62 65 72 4e 6f 64 65 2e 4e 61 6d 65 29  memberNode.Name)
33d0: 20 7b 0d 0a 09 09 09 09 09 09 09 09 63 61 73 65   {..........case
33e0: 20 22 63 6f 6e 73 74 72 75 63 74 6f 72 22 3a 20   "constructor": 
33f0: 7b 0d 0a 09 09 09 09 09 09 09 09 09 73 74 72 69  {...........stri
3400: 6e 67 20 6f 76 65 72 6c 6f 61 64 20 3d 20 58 6d  ng overload = Xm
3410: 6c 55 74 69 6c 73 2e 47 65 74 41 74 74 72 69 62  lUtils.GetAttrib
3420: 75 74 65 53 74 72 69 6e 67 28 6d 65 6d 62 65 72  uteString(member
3430: 4e 6f 64 65 2c 20 22 6f 76 65 72 6c 6f 61 64 22  Node, "overload"
3440: 2c 20 66 61 6c 73 65 29 3b 0d 0a 09 09 09 09 09  , false);.......
3450: 09 09 09 09 09 52 65 67 69 73 74 65 72 43 6f 6e  .....RegisterCon
3460: 73 74 72 75 63 74 6f 72 28 61 73 73 65 6d 62 6c  structor(assembl
3470: 79 4e 61 6d 65 2c 20 74 79 70 65 49 64 2c 20 6d  yName, typeId, m
3480: 65 6d 62 65 72 49 64 2c 20 6f 76 65 72 6c 6f 61  emberId, overloa
3490: 64 29 3b 0d 0a 09 09 09 09 09 09 09 09 09 7d 0d  d);...........}.
34a0: 0a 09 09 09 09 09 09 09 09 09 62 72 65 61 6b 3b  ..........break;
34b0: 0d 0a 09 09 09 09 09 09 09 09 63 61 73 65 20 22  ..........case "
34c0: 66 69 65 6c 64 22 3a 20 7b 0d 0a 09 09 09 09 09  field": {.......
34d0: 09 09 09 09 09 62 6f 6f 6c 20 69 73 45 6e 75 6d  .....bool isEnum
34e0: 20 3d 20 28 74 79 70 65 4e 6f 64 65 2e 4e 61 6d   = (typeNode.Nam
34f0: 65 20 3d 3d 20 22 65 6e 75 6d 65 72 61 74 69 6f  e == "enumeratio
3500: 6e 22 29 3b 0d 0a 09 09 09 09 09 09 09 09 09 09  n");............
3510: 73 74 72 69 6e 67 20 6d 65 6d 62 65 72 4e 61 6d  string memberNam
3520: 65 20 3d 20 47 65 74 4e 6f 64 65 4e 61 6d 65 28  e = GetNodeName(
3530: 6d 65 6d 62 65 72 4e 6f 64 65 29 3b 0d 0a 09 09  memberNode);....
3540: 09 09 09 09 09 09 09 09 52 65 67 69 73 74 65 72  ........Register
3550: 46 69 65 6c 64 28 61 73 73 65 6d 62 6c 79 4e 61  Field(assemblyNa
3560: 6d 65 2c 20 74 79 70 65 49 64 2c 20 6d 65 6d 62  me, typeId, memb
3570: 65 72 49 64 2c 20 69 73 45 6e 75 6d 2c 20 6d 65  erId, isEnum, me
3580: 6d 62 65 72 4e 61 6d 65 29 3b 0d 0a 09 09 09 09  mberName);......
3590: 09 09 09 09 09 7d 0d 0a 09 09 09 09 09 09 09 09  .....}..........
35a0: 09 62 72 65 61 6b 3b 0d 0a 09 09 09 09 09 09 09  .break;.........
35b0: 09 63 61 73 65 20 22 70 72 6f 70 65 72 74 79 22  .case "property"
35c0: 3a 20 7b 0d 0a 09 09 09 09 09 09 09 09 09 09 73  : {............s
35d0: 74 72 69 6e 67 20 6f 76 65 72 6c 6f 61 64 20 3d  tring overload =
35e0: 20 47 65 74 4e 6f 64 65 4f 76 65 72 6c 6f 61 64   GetNodeOverload
35f0: 28 6d 65 6d 62 65 72 4e 6f 64 65 29 3b 0d 0a 09  (memberNode);...
3600: 09 09 09 09 09 09 09 09 09 73 74 72 69 6e 67 20  .........string 
3610: 6d 65 6d 62 65 72 4e 61 6d 65 20 3d 20 47 65 74  memberName = Get
3620: 4e 6f 64 65 4e 61 6d 65 28 6d 65 6d 62 65 72 4e  NodeName(memberN
3630: 6f 64 65 29 3b 0d 0a 09 09 09 09 09 09 09 09 09  ode);...........
3640: 09 52 65 67 69 73 74 65 72 50 72 6f 70 65 72 74  .RegisterPropert
3650: 79 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  y(assemblyName, 
3660: 6d 65 6d 62 65 72 49 64 2c 20 6d 65 6d 62 65 72  memberId, member
3670: 4e 61 6d 65 2c 20 6f 76 65 72 6c 6f 61 64 29 3b  Name, overload);
3680: 0d 0a 09 09 09 09 09 09 09 09 09 7d 0d 0a 09 09  ...........}....
3690: 09 09 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09  .......break;...
36a0: 09 09 09 09 09 09 09 63 61 73 65 20 22 6d 65 74  .......case "met
36b0: 68 6f 64 22 3a 20 7b 0d 0a 09 09 09 09 09 09 09  hod": {.........
36c0: 09 09 09 73 74 72 69 6e 67 20 6f 76 65 72 6c 6f  ...string overlo
36d0: 61 64 20 3d 20 47 65 74 4e 6f 64 65 4f 76 65 72  ad = GetNodeOver
36e0: 6c 6f 61 64 28 6d 65 6d 62 65 72 4e 6f 64 65 29  load(memberNode)
36f0: 3b 0d 0a 09 09 09 09 09 09 09 09 09 09 73 74 72  ;............str
3700: 69 6e 67 20 6d 65 6d 62 65 72 44 69 73 70 6c 61  ing memberDispla
3710: 79 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64 65 44  yName = GetNodeD
3720: 69 73 70 6c 61 79 4e 61 6d 65 28 6d 65 6d 62 65  isplayName(membe
3730: 72 4e 6f 64 65 29 3b 0d 0a 09 09 09 09 09 09 09  rNode);.........
3740: 09 09 09 52 65 67 69 73 74 65 72 4d 65 74 68 6f  ...RegisterMetho
3750: 64 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  d(assemblyName, 
3760: 6d 65 6d 62 65 72 49 64 2c 20 6d 65 6d 62 65 72  memberId, member
3770: 44 69 73 70 6c 61 79 4e 61 6d 65 2c 20 6f 76 65  DisplayName, ove
3780: 72 6c 6f 61 64 29 3b 0d 0a 09 09 09 09 09 09 09  rload);.........
3790: 09 09 7d 0d 0a 09 09 09 09 09 09 09 09 09 62 72  ..}...........br
37a0: 65 61 6b 3b 0d 0a 09 09 09 09 09 09 09 09 63 61  eak;..........ca
37b0: 73 65 20 22 6f 70 65 72 61 74 6f 72 22 3a 20 7b  se "operator": {
37c0: 0d 0a 09 09 09 09 09 09 09 09 09 09 73 74 72 69  ............stri
37d0: 6e 67 20 6f 76 65 72 6c 6f 61 64 20 3d 20 47 65  ng overload = Ge
37e0: 74 4e 6f 64 65 4f 76 65 72 6c 6f 61 64 28 6d 65  tNodeOverload(me
37f0: 6d 62 65 72 4e 6f 64 65 29 3b 0d 0a 09 09 09 09  mberNode);......
3800: 09 09 09 09 09 09 73 74 72 69 6e 67 20 6d 65 6d  ......string mem
3810: 62 65 72 4e 61 6d 65 20 3d 20 47 65 74 4e 6f 64  berName = GetNod
3820: 65 4e 61 6d 65 28 6d 65 6d 62 65 72 4e 6f 64 65  eName(memberNode
3830: 29 3b 0d 0a 09 09 09 09 09 09 09 09 09 09 52 65  );............Re
3840: 67 69 73 74 65 72 4f 70 65 72 61 74 6f 72 28 61  gisterOperator(a
3850: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6d 65 6d  ssemblyName, mem
3860: 62 65 72 49 64 2c 20 6d 65 6d 62 65 72 4e 61 6d  berId, memberNam
3870: 65 2c 20 6f 76 65 72 6c 6f 61 64 29 3b 0d 0a 09  e, overload);...
3880: 09 09 09 09 09 09 09 09 7d 0d 0a 09 09 09 09 09  ........}.......
3890: 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 09 09  ....break;......
38a0: 09 09 09 09 63 61 73 65 20 22 65 76 65 6e 74 22  ....case "event"
38b0: 3a 20 7b 0d 0a 09 09 09 09 09 09 09 09 09 09 73  : {............s
38c0: 74 72 69 6e 67 20 6d 65 6d 62 65 72 4e 61 6d 65  tring memberName
38d0: 20 3d 20 47 65 74 4e 6f 64 65 4e 61 6d 65 28 6d   = GetNodeName(m
38e0: 65 6d 62 65 72 4e 6f 64 65 29 3b 0d 0a 09 09 09  emberNode);.....
38f0: 09 09 09 09 09 09 09 52 65 67 69 73 74 65 72 45  .......RegisterE
3900: 76 65 6e 74 28 61 73 73 65 6d 62 6c 79 4e 61 6d  vent(assemblyNam
3910: 65 2c 20 6d 65 6d 62 65 72 49 64 2c 20 6d 65 6d  e, memberId, mem
3920: 62 65 72 4e 61 6d 65 29 3b 0d 0a 09 09 09 09 09  berName);.......
3930: 09 09 09 09 7d 0d 0a 09 09 09 09 09 09 09 09 09  ....}...........
3940: 62 72 65 61 6b 3b 0d 0a 09 09 09 09 09 09 09 7d  break;.........}
3950: 0d 0a 09 09 09 09 09 09 7d 0d 0a 09 09 09 09 09  ........}.......
3960: 7d 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a  }......}.....}..
3970: 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65  ..}......private
3980: 20 76 6f 69 64 20 52 65 67 69 73 74 65 72 41 73   void RegisterAs
3990: 73 65 6d 62 6c 79 28 73 74 72 69 6e 67 20 61 73  sembly(string as
39a0: 73 65 6d 62 6c 79 4e 61 6d 65 29 20 7b 0d 0a 09  semblyName) {...
39b0: 09 09 52 65 67 69 73 74 65 72 28 61 73 73 65 6d  ..Register(assem
39c0: 62 6c 79 4e 61 6d 65 2c 20 6e 75 6c 6c 2c 20 61  blyName, null, a
39d0: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 43 61 6c  ssemblyName, Cal
39e0: 63 75 6c 61 74 65 46 69 6c 65 6e 61 6d 65 46 6f  culateFilenameFo
39f0: 72 49 64 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65  rId(assemblyName
3a00: 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 29 3b 0d  , null, null));.
3a10: 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74  ...}......privat
3a20: 65 20 76 6f 69 64 20 52 65 67 69 73 74 65 72 4e  e void RegisterN
3a30: 61 6d 65 73 70 61 63 65 28 73 74 72 69 6e 67 20  amespace(string 
3a40: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73 74  assemblyName, st
3a50: 72 69 6e 67 20 6e 61 6d 65 73 70 61 63 65 4e 61  ring namespaceNa
3a60: 6d 65 29 20 7b 0d 0a 09 09 09 69 66 20 28 73 74  me) {.....if (st
3a70: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
3a80: 74 79 28 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65  ty(namespaceName
3a90: 29 29 20 7b 0d 0a 09 09 09 09 6e 61 6d 65 73 70  )) {......namesp
3aa0: 61 63 65 4e 61 6d 65 20 3d 20 22 28 67 6c 6f 62  aceName = "(glob
3ab0: 61 6c 29 22 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09  al)";.....}.....
3ac0: 73 74 72 69 6e 67 20 6e 61 6d 65 73 70 61 63 65  string namespace
3ad0: 49 64 20 3d 20 22 4e 3a 22 20 2b 20 6e 61 6d 65  Id = "N:" + name
3ae0: 73 70 61 63 65 4e 61 6d 65 3b 0d 0a 09 09 09 52  spaceName;.....R
3af0: 65 67 69 73 74 65 72 28 61 73 73 65 6d 62 6c 79  egister(assembly
3b00: 4e 61 6d 65 2c 20 6e 61 6d 65 73 70 61 63 65 49  Name, namespaceI
3b10: 64 2c 20 6e 61 6d 65 73 70 61 63 65 4e 61 6d 65  d, namespaceName
3b20: 2c 20 43 61 6c 63 75 6c 61 74 65 46 69 6c 65 6e  , CalculateFilen
3b30: 61 6d 65 46 6f 72 49 64 28 61 73 73 65 6d 62 6c  ameForId(assembl
3b40: 79 4e 61 6d 65 2c 20 6e 61 6d 65 73 70 61 63 65  yName, namespace
3b50: 49 64 2c 20 6e 75 6c 6c 29 29 3b 0d 0a 09 09 7d  Id, null));....}
3b60: 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 76 6f  ......private vo
3b70: 69 64 20 52 65 67 69 73 74 65 72 54 79 70 65 28  id RegisterType(
3b80: 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79 4e  string assemblyN
3b90: 61 6d 65 2c 20 73 74 72 69 6e 67 20 74 79 70 65  ame, string type
3ba0: 49 64 2c 20 73 74 72 69 6e 67 20 64 69 73 70 6c  Id, string displ
3bb0: 61 79 4e 61 6d 65 29 20 7b 0d 0a 09 09 09 52 65  ayName) {.....Re
3bc0: 67 69 73 74 65 72 28 61 73 73 65 6d 62 6c 79 4e  gister(assemblyN
3bd0: 61 6d 65 2c 20 74 79 70 65 49 64 2c 20 64 69 73  ame, typeId, dis
3be0: 70 6c 61 79 4e 61 6d 65 2c 20 43 61 6c 63 75 6c  playName, Calcul
3bf0: 61 74 65 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64  ateFilenameForId
3c00: 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74  (assemblyName, t
3c10: 79 70 65 49 64 2c 20 6e 75 6c 6c 29 29 3b 0d 0a  ypeId, null));..
3c20: 09 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65  ..}......private
3c30: 20 76 6f 69 64 20 52 65 67 69 73 74 65 72 43 6f   void RegisterCo
3c40: 6e 73 74 72 75 63 74 6f 72 28 73 74 72 69 6e 67  nstructor(string
3c50: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73   assemblyName, s
3c60: 74 72 69 6e 67 20 74 79 70 65 49 64 2c 20 73 74  tring typeId, st
3c70: 72 69 6e 67 20 69 64 2c 20 73 74 72 69 6e 67 20  ring id, string 
3c80: 6f 76 65 72 6c 6f 61 64 29 20 7b 0d 0a 09 09 09  overload) {.....
3c90: 52 65 67 69 73 74 65 72 28 61 73 73 65 6d 62 6c  Register(assembl
3ca0: 79 4e 61 6d 65 2c 20 69 64 2c 20 47 65 74 44 69  yName, id, GetDi
3cb0: 73 70 6c 61 79 4e 61 6d 65 46 6f 72 49 64 28 61  splayNameForId(a
3cc0: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 74 79 70  ssemblyName, typ
3cd0: 65 49 64 29 2c 20 43 61 6c 63 75 6c 61 74 65 46  eId), CalculateF
3ce0: 69 6c 65 6e 61 6d 65 46 6f 72 49 64 28 61 73 73  ilenameForId(ass
3cf0: 65 6d 62 6c 79 4e 61 6d 65 2c 20 69 64 2c 20 6f  emblyName, id, o
3d00: 76 65 72 6c 6f 61 64 29 29 3b 0d 0a 09 09 7d 0d  verload));....}.
3d10: 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 76 6f 69  .....private voi
3d20: 64 20 52 65 67 69 73 74 65 72 4f 70 65 72 61 74  d RegisterOperat
3d30: 6f 72 28 73 74 72 69 6e 67 20 61 73 73 65 6d 62  or(string assemb
3d40: 6c 79 4e 61 6d 65 2c 20 73 74 72 69 6e 67 20 6d  lyName, string m
3d50: 65 6d 62 65 72 49 64 2c 20 73 74 72 69 6e 67 20  emberId, string 
3d60: 6d 65 6d 62 65 72 4e 61 6d 65 2c 20 73 74 72 69  memberName, stri
3d70: 6e 67 20 6f 76 65 72 6c 6f 61 64 29 20 7b 0d 0a  ng overload) {..
3d80: 09 09 09 52 65 67 69 73 74 65 72 28 61 73 73 65  ...Register(asse
3d90: 6d 62 6c 79 4e 61 6d 65 2c 20 6d 65 6d 62 65 72  mblyName, member
3da0: 49 64 2c 20 6d 65 6d 62 65 72 4e 61 6d 65 2c 20  Id, memberName, 
3db0: 43 61 6c 63 75 6c 61 74 65 46 69 6c 65 6e 61 6d  CalculateFilenam
3dc0: 65 46 6f 72 49 64 28 61 73 73 65 6d 62 6c 79 4e  eForId(assemblyN
3dd0: 61 6d 65 2c 20 6d 65 6d 62 65 72 49 64 2c 20 6f  ame, memberId, o
3de0: 76 65 72 6c 6f 61 64 29 29 3b 0d 0a 09 09 7d 0d  verload));....}.
3df0: 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 76 6f 69  .....private voi
3e00: 64 20 52 65 67 69 73 74 65 72 4d 65 74 68 6f 64  d RegisterMethod
3e10: 28 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79  (string assembly
3e20: 4e 61 6d 65 2c 20 73 74 72 69 6e 67 20 6d 65 6d  Name, string mem
3e30: 62 65 72 49 64 2c 20 73 74 72 69 6e 67 20 6d 65  berId, string me
3e40: 6d 62 65 72 44 69 73 70 6c 61 79 4e 61 6d 65 2c  mberDisplayName,
3e50: 20 73 74 72 69 6e 67 20 6f 76 65 72 6c 6f 61 64   string overload
3e60: 29 20 7b 0d 0a 09 09 09 52 65 67 69 73 74 65 72  ) {.....Register
3e70: 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6d  (assemblyName, m
3e80: 65 6d 62 65 72 49 64 2c 20 6d 65 6d 62 65 72 44  emberId, memberD
3e90: 69 73 70 6c 61 79 4e 61 6d 65 2c 20 43 61 6c 63  isplayName, Calc
3ea0: 75 6c 61 74 65 46 69 6c 65 6e 61 6d 65 46 6f 72  ulateFilenameFor
3eb0: 49 64 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c  Id(assemblyName,
3ec0: 20 6d 65 6d 62 65 72 49 64 2c 20 6f 76 65 72 6c   memberId, overl
3ed0: 6f 61 64 29 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09  oad));....}.....
3ee0: 09 70 72 69 76 61 74 65 20 76 6f 69 64 20 52 65  .private void Re
3ef0: 67 69 73 74 65 72 50 72 6f 70 65 72 74 79 28 73  gisterProperty(s
3f00: 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79 4e 61  tring assemblyNa
3f10: 6d 65 2c 20 73 74 72 69 6e 67 20 6d 65 6d 62 65  me, string membe
3f20: 72 49 64 2c 20 73 74 72 69 6e 67 20 6d 65 6d 62  rId, string memb
3f30: 65 72 4e 61 6d 65 2c 20 73 74 72 69 6e 67 20 6f  erName, string o
3f40: 76 65 72 6c 6f 61 64 29 20 7b 0d 0a 09 09 09 52  verload) {.....R
3f50: 65 67 69 73 74 65 72 28 61 73 73 65 6d 62 6c 79  egister(assembly
3f60: 4e 61 6d 65 2c 20 6d 65 6d 62 65 72 49 64 2c 20  Name, memberId, 
3f70: 6d 65 6d 62 65 72 4e 61 6d 65 2c 20 43 61 6c 63  memberName, Calc
3f80: 75 6c 61 74 65 46 69 6c 65 6e 61 6d 65 46 6f 72  ulateFilenameFor
3f90: 49 64 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c  Id(assemblyName,
3fa0: 20 6d 65 6d 62 65 72 49 64 2c 20 6f 76 65 72 6c   memberId, overl
3fb0: 6f 61 64 29 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09  oad));....}.....
3fc0: 09 70 72 69 76 61 74 65 20 76 6f 69 64 20 52 65  .private void Re
3fd0: 67 69 73 74 65 72 46 69 65 6c 64 28 73 74 72 69  gisterField(stri
3fe0: 6e 67 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c  ng assemblyName,
3ff0: 20 73 74 72 69 6e 67 20 74 79 70 65 49 64 2c 20   string typeId, 
4000: 73 74 72 69 6e 67 20 6d 65 6d 62 65 72 49 64 2c  string memberId,
4010: 20 62 6f 6f 6c 20 69 73 45 6e 75 6d 2c 20 73 74   bool isEnum, st
4020: 72 69 6e 67 20 6d 65 6d 62 65 72 4e 61 6d 65 29  ring memberName)
4030: 20 7b 0d 0a 09 09 09 69 66 20 28 69 73 45 6e 75   {.....if (isEnu
4040: 6d 29 20 7b 0d 0a 09 09 09 09 52 65 67 69 73 74  m) {......Regist
4050: 65 72 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c  er(assemblyName,
4060: 20 6d 65 6d 62 65 72 49 64 2c 20 6d 65 6d 62 65   memberId, membe
4070: 72 4e 61 6d 65 2c 20 47 65 74 46 69 6c 65 6e 61  rName, GetFilena
4080: 6d 65 46 6f 72 49 64 28 61 73 73 65 6d 62 6c 79  meForId(assembly
4090: 4e 61 6d 65 2c 20 74 79 70 65 49 64 29 29 3b 0d  Name, typeId));.
40a0: 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0d 0a 09 09  ....} else {....
40b0: 09 09 52 65 67 69 73 74 65 72 28 61 73 73 65 6d  ..Register(assem
40c0: 62 6c 79 4e 61 6d 65 2c 20 6d 65 6d 62 65 72 49  blyName, memberI
40d0: 64 2c 20 6d 65 6d 62 65 72 4e 61 6d 65 2c 20 43  d, memberName, C
40e0: 61 6c 63 75 6c 61 74 65 46 69 6c 65 6e 61 6d 65  alculateFilename
40f0: 46 6f 72 49 64 28 61 73 73 65 6d 62 6c 79 4e 61  ForId(assemblyNa
4100: 6d 65 2c 20 6d 65 6d 62 65 72 49 64 2c 20 6e 75  me, memberId, nu
4110: 6c 6c 29 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d  ll));.....}....}
4120: 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 76 6f  ......private vo
4130: 69 64 20 52 65 67 69 73 74 65 72 45 76 65 6e 74  id RegisterEvent
4140: 28 73 74 72 69 6e 67 20 61 73 73 65 6d 62 6c 79  (string assembly
4150: 4e 61 6d 65 2c 20 73 74 72 69 6e 67 20 6d 65 6d  Name, string mem
4160: 62 65 72 49 64 2c 20 73 74 72 69 6e 67 20 6d 65  berId, string me
4170: 6d 62 65 72 4e 61 6d 65 29 20 7b 0d 0a 09 09 09  mberName) {.....
4180: 52 65 67 69 73 74 65 72 28 61 73 73 65 6d 62 6c  Register(assembl
4190: 79 4e 61 6d 65 2c 20 6d 65 6d 62 65 72 49 64 2c  yName, memberId,
41a0: 20 6d 65 6d 62 65 72 4e 61 6d 65 2c 20 43 61 6c   memberName, Cal
41b0: 63 75 6c 61 74 65 46 69 6c 65 6e 61 6d 65 46 6f  culateFilenameFo
41c0: 72 49 64 28 61 73 73 65 6d 62 6c 79 4e 61 6d 65  rId(assemblyName
41d0: 2c 20 6d 65 6d 62 65 72 49 64 2c 20 6e 75 6c 6c  , memberId, null
41e0: 29 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 0d 0a 09 09  ));....}........
41f0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 09 09  #endregion......
4200: 23 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72 61  #region Registra
4210: 74 69 6f 6e 20 26 20 4c 6f 6f 6b 75 70 20 4c 6f  tion & Lookup Lo
4220: 67 69 63 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65  gic......private
4230: 20 73 74 72 69 6e 67 20 47 65 74 46 69 6c 65 6e   string GetFilen
4240: 61 6d 65 46 6f 72 49 64 49 6e 74 65 72 6e 61 6c  ameForIdInternal
4250: 28 73 74 72 69 6e 67 20 63 75 72 72 65 6e 74 41  (string currentA
4260: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72  ssemblyName, str
4270: 69 6e 67 20 6d 65 6d 62 65 72 49 64 29 20 7b 0d  ing memberId) {.
4280: 0a 09 09 09 73 74 72 69 6e 67 20 66 69 6c 65 6e  ....string filen
4290: 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d 65 73 5b  ame = fileNames[
42a0: 63 75 72 72 65 6e 74 41 73 73 65 6d 62 6c 79 4e  currentAssemblyN
42b0: 61 6d 65 20 2b 20 6d 65 6d 62 65 72 49 64 5d 3b  ame + memberId];
42c0: 0d 0a 09 09 09 69 66 20 28 66 69 6c 65 6e 61 6d  .....if (filenam
42d0: 65 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0d 0a 09 09  e == null) {....
42e0: 09 09 2f 2f 20 73 65 61 72 63 68 20 66 6f 72 20  ..// search for 
42f0: 69 64 65 6e 74 69 66 69 65 72 20 69 6e 20 72 65  identifier in re
4300: 66 65 72 65 6e 63 65 64 20 61 73 73 65 6d 62 6c  ferenced assembl
4310: 69 65 73 0d 0a 09 09 09 09 73 74 72 69 6e 67 5b  ies......string[
4320: 5d 20 61 73 73 65 6d 62 6c 79 52 65 66 65 72 65  ] assemblyRefere
4330: 6e 63 65 20 3d 20 61 73 73 65 6d 62 6c 79 52 65  nce = assemblyRe
4340: 66 65 72 65 6e 63 65 73 5b 63 75 72 72 65 6e 74  ferences[current
4350: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 5d 3b 0d 0a  AssemblyName];..
4360: 09 09 09 09 69 66 20 28 61 73 73 65 6d 62 6c 79  ....if (assembly
4370: 52 65 66 65 72 65 6e 63 65 20 21 3d 20 6e 75 6c  Reference != nul
4380: 6c 29 20 7b 0d 0a 09 09 09 09 09 66 6f 72 65 61  l) {.......forea
4390: 63 68 20 28 73 74 72 69 6e 67 20 61 73 73 65 6d  ch (string assem
43a0: 62 6c 79 4e 61 6d 65 20 69 6e 20 61 73 73 65 6d  blyName in assem
43b0: 62 6c 79 52 65 66 65 72 65 6e 63 65 29 20 7b 0d  blyReference) {.
43c0: 0a 09 09 09 09 09 09 66 69 6c 65 6e 61 6d 65 20  .......filename 
43d0: 3d 20 66 69 6c 65 4e 61 6d 65 73 5b 61 73 73 65  = fileNames[asse
43e0: 6d 62 6c 79 4e 61 6d 65 20 2b 20 6d 65 6d 62 65  mblyName + membe
43f0: 72 49 64 5d 3b 0d 0a 09 09 09 09 09 09 69 66 20  rId];........if 
4400: 28 66 69 6c 65 6e 61 6d 65 20 21 3d 20 6e 75 6c  (filename != nul
4410: 6c 29 0d 0a 09 09 09 09 09 09 09 62 72 65 61 6b  l).........break
4420: 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09 09 7d  ;.......}......}
4430: 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 69 66 20  .....}.......if 
4440: 28 66 69 6c 65 6e 61 6d 65 20 3d 3d 20 6e 75 6c  (filename == nul
4450: 6c 20 26 26 20 6d 65 6d 62 65 72 49 64 20 21 3d  l && memberId !=
4460: 20 6e 75 6c 6c 29 20 7b 0d 0a 09 09 09 09 66 69   null) {......fi
4470: 6c 65 6e 61 6d 65 20 3d 20 66 69 6c 65 4e 61 6d  lename = fileNam
4480: 65 73 5b 6d 65 6d 62 65 72 49 64 5d 3b 0d 0a 09  es[memberId];...
4490: 09 09 7d 0d 0a 0d 0a 09 09 09 2f 2f 09 09 09 44  ..}.......//...D
44a0: 65 62 75 67 2e 41 73 73 65 72 74 28 66 69 6c 65  ebug.Assert(file
44b0: 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 2c 20 73 74  name != null, st
44c0: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22 46 69 6c  ring.Format("Fil
44d0: 65 6e 61 6d 65 20 66 6f 72 20 61 73 73 65 6d 62  ename for assemb
44e0: 6c 79 3a 6d 65 6d 62 65 72 49 64 20 5b 7b 30 7d  ly:memberId [{0}
44f0: 3a 7b 31 7d 5d 20 6e 6f 74 20 66 6f 75 6e 64 22  :{1}] not found"
4500: 2c 20 63 75 72 72 65 6e 74 41 73 73 65 6d 62 6c  , currentAssembl
4510: 79 4e 61 6d 65 2c 20 6d 65 6d 62 65 72 49 64 29  yName, memberId)
4520: 29 3b 0d 0a 09 09 09 2f 2f 09 09 09 44 65 62 75  );.....//...Debu
4530: 67 2e 57 72 69 74 65 4c 69 6e 65 28 73 74 72 69  g.WriteLine(stri
4540: 6e 67 2e 46 6f 72 6d 61 74 28 22 47 65 74 46 69  ng.Format("GetFi
4550: 6c 65 6e 61 6d 65 46 6f 72 49 64 49 6e 74 65 72  lenameForIdInter
4560: 6e 61 6c 28 27 7b 30 7d 27 2c 27 7b 31 7d 27 29  nal('{0}','{1}')
4570: 20 3d 3e 20 7b 32 7d 22 2c 20 63 75 72 72 65 6e   => {2}", curren
4580: 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6d  tAssemblyName, m
4590: 65 6d 62 65 72 49 64 2c 20 66 69 6c 65 6e 61 6d  emberId, filenam
45a0: 65 29 29 3b 0d 0a 09 09 09 69 66 20 28 66 69 6c  e));.....if (fil
45b0: 65 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ename != null)..
45c0: 09 09 09 09 72 65 74 75 72 6e 20 66 69 6c 65 6e  ....return filen
45d0: 61 6d 65 3b 0d 0a 0d 0a 09 09 09 69 66 20 28 75  ame;.......if (u
45e0: 74 69 6c 69 74 69 65 73 20 21 3d 20 6e 75 6c 6c  tilities != null
45f0: 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 69 66 20  ).....{......if 
4600: 28 6d 65 6d 62 65 72 49 64 2e 4c 65 6e 67 74 68  (memberId.Length
4610: 20 3e 20 32 20 26 26 20 6d 65 6d 62 65 72 49 64   > 2 && memberId
4620: 5b 31 5d 20 3d 3d 20 27 3a 27 29 0d 0a 09 09 09  [1] == ':').....
4630: 09 09 6d 65 6d 62 65 72 49 64 20 3d 20 6d 65 6d  ..memberId = mem
4640: 62 65 72 49 64 2e 53 75 62 73 74 72 69 6e 67 28  berId.Substring(
4650: 32 29 3b 0d 0a 0d 0a 09 09 09 09 66 69 6c 65 6e  2);........filen
4660: 61 6d 65 20 3d 20 75 74 69 6c 69 74 69 65 73 2e  ame = utilities.
4670: 46 6f 72 6d 61 74 4f 6e 6c 69 6e 65 53 44 4b 4c  FormatOnlineSDKL
4680: 69 6e 6b 28 6d 65 6d 62 65 72 49 64 29 3b 0d 0a  ink(memberId);..
4690: 0d 0a 09 09 09 09 69 66 20 28 66 69 6c 65 6e 61  ......if (filena
46a0: 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 09 09 09  me != null).....
46b0: 09 09 72 65 74 75 72 6e 20 66 69 6c 65 6e 61 6d  ..return filenam
46c0: 65 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 72  e;.....}.......r
46d0: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70  eturn String.Emp
46e0: 74 79 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 70 72  ty;....}......pr
46f0: 69 76 61 74 65 20 73 74 72 69 6e 67 20 47 65 74  ivate string Get
4700: 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 53 70 65  FilenameForIdSpe
4710: 63 69 61 6c 28 73 74 72 69 6e 67 20 61 73 73 65  cial(string asse
4720: 6d 62 6c 79 4e 61 6d 65 2c 20 73 74 72 69 6e 67  mblyName, string
4730: 20 6d 65 6d 62 65 72 49 64 2c 20 73 74 72 69 6e   memberId, strin
4740: 67 20 70 6f 73 74 66 69 78 29 20 7b 0d 0a 09 09  g postfix) {....
4750: 09 73 74 72 69 6e 67 20 66 6e 20 3d 20 47 65 74  .string fn = Get
4760: 46 69 6c 65 6e 61 6d 65 46 6f 72 49 64 49 6e 74  FilenameForIdInt
4770: 65 72 6e 61 6c 28 61 73 73 65 6d 62 6c 79 4e 61  ernal(assemblyNa
4780: 6d 65 2c 20 6d 65 6d 62 65 72 49 64 29 3b 0d 0a  me, memberId);..
4790: 09 09 09 69 66 20 28 66 6e 20 21 3d 20 6e 75 6c  ...if (fn != nul
47a0: 6c 20 26 26 20 66 6e 2e 4c 65 6e 67 74 68 20 3e  l && fn.Length >
47b0: 20 45 58 54 2e 4c 65 6e 67 74 68 29 20 7b 0d 0a   EXT.Length) {..
47c0: 09 09 09 09 66 6e 20 3d 20 66 6e 2e 49 6e 73 65  ....fn = fn.Inse
47d0: 72 74 28 66 6e 2e 4c 65 6e 67 74 68 20 2d 20 45  rt(fn.Length - E
47e0: 58 54 2e 4c 65 6e 67 74 68 2c 20 70 6f 73 74 66  XT.Length, postf
47f0: 69 78 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09 2f  ix);.....}...../
4800: 2f 09 09 09 44 65 62 75 67 2e 57 72 69 74 65 4c  /...Debug.WriteL
4810: 69 6e 65 28 73 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(string.Forma
4820: 74 28 22 47 65 74 46 69 6c 65 6e 61 6d 65 46 6f  t("GetFilenameFo
4830: 72 49 64 53 70 65 63 69 61 6c 28 27 7b 30 7d 27  rIdSpecial('{0}'
4840: 2c 27 7b 31 7d 27 29 20 3d 3e 20 7b 32 7d 22 2c  ,'{1}') => {2}",
4850: 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 6d   assemblyName, m
4860: 65 6d 62 65 72 49 64 2c 20 66 6e 29 29 3b 0d 0a  emberId, fn));..
4870: 09 09 09 72 65 74 75 72 6e 20 66 6e 3b 0d 0a 09  ...return fn;...
4880: 09 7d 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20  .}......private 
4890: 76 6f 69 64 20 52 65 67 69 73 74 65 72 28 73 74  void Register(st
48a0: 72 69 6e 67 20 61 73 73 65 6d 62 6c 79 4e 61 6d  ring assemblyNam
48b0: 65 2c 20 73 74 72 69 6e 67 20 69 64 2c 20 73 74  e, string id, st
48c0: 72 69 6e 67 20 64 69 73 70 6c 61 79 4e 61 6d 65  ring displayName
48d0: 2c 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  , string fileNam
48e0: 65 29 20 7b 0d 0a 09 09 09 2f 2f 09 09 09 44 65  e) {.....//...De
48f0: 62 75 67 2e 57 72 69 74 65 4c 69 6e 65 28 73 74  bug.WriteLine(st
4900: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22 52 65 67  ring.Format("Reg
4910: 69 73 74 65 72 69 6e 67 20 5b 7b 30 7d 2c 7b 31  istering [{0},{1
4920: 7d 5d 3d 5b 7b 32 7d 2c 7b 33 7d 5d 22 2c 20 61  }]=[{2},{3}]", a
4930: 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 69 64 2c  ssemblyName, id,
4940: 20 64 69 73 70 6c 61 79 4e 61 6d 65 2c 20 66 69   displayName, fi
4950: 6c 65 4e 61 6d 65 29 29 3b 0d 0a 09 09 09 66 69  leName));.....fi
4960: 6c 65 4e 61 6d 65 73 5b 61 73 73 65 6d 62 6c 79  leNames[assembly
4970: 4e 61 6d 65 20 2b 20 69 64 5d 20 3d 20 66 69 6c  Name + id] = fil
4980: 65 4e 61 6d 65 3b 0d 0a 09 09 09 65 6c 65 6d 4e  eName;.....elemN
4990: 61 6d 65 73 5b 61 73 73 65 6d 62 6c 79 4e 61 6d  ames[assemblyNam
49a0: 65 20 2b 20 69 64 5d 20 3d 20 64 69 73 70 6c 61  e + id] = displa
49b0: 79 4e 61 6d 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09  yName;....}.....
49c0: 09 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a  ./// <summary>..
49d0: 09 09 2f 2f 2f 20 6f 66 20 74 68 65 20 66 6f 72  ../// of the for
49e0: 6d 20 22 54 3a 58 58 58 22 2c 20 22 46 3a 58 58  m "T:XXX", "F:XX
49f0: 58 22 20 65 74 63 0d 0a 09 09 2f 2f 2f 20 3c 2f  X" etc..../// </
4a00: 73 75 6d 6d 61 72 79 3e 0d 0a 09 09 70 72 69 76  summary>....priv
4a10: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
4a20: 67 20 43 61 6c 63 75 6c 61 74 65 46 69 6c 65 6e  g CalculateFilen
4a30: 61 6d 65 46 6f 72 49 64 28 73 74 72 69 6e 67 20  ameForId(string 
4a40: 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20 73 74  assemblyName, st
4a50: 72 69 6e 67 20 69 64 2c 20 73 74 72 69 6e 67 20  ring id, string 
4a60: 6f 76 65 72 6c 6f 61 64 29 20 7b 0d 0a 09 09 09  overload) {.....
4a70: 69 66 20 28 69 64 20 3d 3d 20 6e 75 6c 6c 29 20  if (id == null) 
4a80: 7b 0d 0a 09 09 09 09 72 65 74 75 72 6e 20 61 73  {......return as
4a90: 73 65 6d 62 6c 79 4e 61 6d 65 20 2b 20 45 58 54  semblyName + EXT
4aa0: 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 2f 2f  ;.....}.......//
4ab0: 09 09 09 63 68 61 72 20 69 64 54 79 70 65 20 3d  ...char idType =
4ac0: 20 27 5c 30 27 3b 0d 0a 09 09 09 69 6e 74 20 69   '\0';.....int i
4ad0: 78 20 3d 20 69 64 2e 49 6e 64 65 78 4f 66 28 27  x = id.IndexOf('
4ae0: 3a 27 29 3b 0d 0a 09 09 09 2f 2f 09 09 09 69 66  :');.....//...if
4af0: 20 28 69 78 20 3e 20 2d 31 29 20 7b 0d 0a 09 09   (ix > -1) {....
4b00: 09 2f 2f 09 09 09 09 69 64 54 79 70 65 20 3d 20  .//....idType = 
4b10: 69 64 5b 30 5d 3b 0d 0a 09 09 09 2f 2f 09 09 09  id[0];.....//...
4b20: 7d 0d 0a 09 09 09 69 64 20 3d 20 69 64 2e 53 75  }.....id = id.Su
4b30: 62 73 74 72 69 6e 67 28 69 78 20 2b 20 31 29 3b  bstring(ix + 1);
4b40: 0d 0a 0d 0a 09 09 09 2f 2f 20 63 6f 6e 73 74 72  .......// constr
4b50: 75 63 74 6f 72 73 20 63 6f 75 6c 64 20 62 65 20  uctors could be 
4b60: 23 63 74 6f 72 20 6f 72 20 23 63 63 74 6f 72 0d  #ctor or #cctor.
4b70: 0a 09 09 09 2f 2f 09 09 09 69 6e 74 20 69 78 44  ....//...int ixD
4b80: 6f 74 48 61 73 68 20 3d 20 69 64 2e 49 6e 64 65  otHash = id.Inde
4b90: 78 4f 66 28 22 2e 23 63 22 29 3b 20 0d 0a 09 09  xOf(".#c"); ....
4ba0: 09 2f 2f 09 09 09 69 66 20 28 69 78 44 6f 74 48  .//...if (ixDotH
4bb0: 61 73 68 20 3e 20 2d 31 29 0d 0a 09 09 09 2f 2f  ash > -1).....//
4bc0: 09 09 09 09 69 64 20 3d 20 69 64 2e 53 75 62 73  ....id = id.Subs
4bd0: 74 72 69 6e 67 28 30 2c 20 69 78 44 6f 74 48 61  tring(0, ixDotHa
4be0: 73 68 29 3b 0d 0a 0d 0a 09 09 09 2f 2f 20 6d 65  sh);.......// me
4bf0: 74 68 6f 64 73 20 63 6f 75 6c 64 20 68 61 76 65  thods could have
4c00: 20 22 28 22 0d 0a 09 09 09 69 6e 74 20 69 78 4c   "(".....int ixL
4c10: 42 72 61 63 65 20 3d 20 69 64 2e 49 6e 64 65 78  Brace = id.Index
4c20: 4f 66 28 22 28 22 29 3b 0d 0a 09 09 09 69 66 20  Of("(");.....if 
4c30: 28 69 78 4c 42 72 61 63 65 20 3e 20 2d 31 29 0d  (ixLBrace > -1).
4c40: 0a 09 09 09 09 69 64 20 3d 20 69 64 2e 53 75 62  .....id = id.Sub
4c50: 73 74 72 69 6e 67 28 30 2c 20 69 78 4c 42 72 61  string(0, ixLBra
4c60: 63 65 29 3b 0d 0a 0d 0a 09 09 09 69 66 20 28 6f  ce);.......if (o
4c70: 76 65 72 6c 6f 61 64 20 21 3d 20 6e 75 6c 6c 29  verload != null)
4c80: 20 7b 0d 0a 09 09 09 09 69 64 20 2b 3d 20 6f 76   {......id += ov
4c90: 65 72 6c 6f 61 64 3b 0d 0a 09 09 09 7d 0d 0a 0d  erload;.....}...
4ca0: 0a 09 09 09 69 64 20 3d 20 69 64 2e 52 65 70 6c  ....id = id.Repl
4cb0: 61 63 65 28 27 23 27 2c 20 27 7e 27 29 3b 0d 0a  ace('#', '~');..
4cc0: 09 09 09 2f 2f 20 67 65 6e 65 72 69 63 20 6d 65  ...// generic me
4cd0: 74 68 6f 64 73 20 68 61 76 65 20 74 68 65 20 66  thods have the f
4ce0: 6f 72 6d 20 22 6d 65 74 68 6f 64 6e 61 6d 65 3c  orm "methodname<
4cf0: 41 72 67 31 2c 20 41 72 67 32 2c 20 2e 2e 2e 3e  Arg1, Arg2, ...>
4d00: 22 0d 0a 09 09 09 69 64 20 3d 20 69 64 2e 52 65  ".....id = id.Re
4d10: 70 6c 61 63 65 28 27 3c 27 2c 20 27 7b 27 29 3b  place('<', '{');
4d20: 0d 0a 09 09 09 69 64 20 3d 20 69 64 2e 52 65 70  .....id = id.Rep
4d30: 6c 61 63 65 28 27 3e 27 2c 20 27 7d 27 29 3b 0d  lace('>', '}');.
4d40: 0a 0d 0a 09 09 09 69 64 20 3d 20 69 64 2e 52 65  ......id = id.Re
4d50: 70 6c 61 63 65 28 27 60 27 2c 20 27 24 27 29 3b  place('`', '$');
4d60: 0d 0a 09 09 09 72 65 74 75 72 6e 20 61 73 73 65  .....return asse
4d70: 6d 62 6c 79 4e 61 6d 65 20 2b 20 22 7e 22 20 2b  mblyName + "~" +
4d80: 20 69 64 20 2b 20 45 58 54 3b 0d 0a 09 09 7d 0d   id + EXT;....}.
4d90: 0a 0d 0a 09 09 23 65 6e 64 72 65 67 69 6f 6e 0d  .....#endregion.
4da0: 0a 0d 0a 09 09 23 72 65 67 69 6f 6e 20 58 6d 6c  .....#region Xml
4db0: 20 55 74 69 6c 69 74 79 20 4d 65 74 68 6f 64 73   Utility Methods
4dc0: 0d 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 73 74  ......private st
4dd0: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e  atic string GetN
4de0: 6f 64 65 4f 76 65 72 6c 6f 61 64 28 58 6d 6c 4e  odeOverload(XmlN
4df0: 6f 64 65 20 6d 65 6d 62 65 72 4e 6f 64 65 29 20  ode memberNode) 
4e00: 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 58 6d 6c  {.....return Xml
4e10: 55 74 69 6c 73 2e 47 65 74 41 74 74 72 69 62 75  Utils.GetAttribu
4e20: 74 65 53 74 72 69 6e 67 28 6d 65 6d 62 65 72 4e  teString(memberN
4e30: 6f 64 65 2c 20 22 6f 76 65 72 6c 6f 61 64 22 2c  ode, "overload",
4e40: 20 66 61 6c 73 65 29 3b 0d 0a 09 09 7d 0d 0a 0d   false);....}...
4e50: 0a 09 09 70 72 69 76 61 74 65 20 73 74 61 74 69  ...private stati
4e60: 63 20 73 74 72 69 6e 67 20 47 65 74 4e 6f 64 65  c string GetNode
4e70: 49 64 28 58 6d 6c 4e 6f 64 65 20 6e 6f 64 65 29  Id(XmlNode node)
4e80: 20 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 58 6d   {.....return Xm
4e90: 6c 55 74 69 6c 73 2e 47 65 74 4e 6f 64 65 49 64  lUtils.GetNodeId
4ea0: 28 6e 6f 64 65 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a  (node);....}....
4eb0: 09 09 70 72 69 76 61 74 65 20 73 74 61 74 69 63  ..private static
4ec0: 20 73 74 72 69 6e 67 20 47 65 74 4e 6f 64 65 4e   string GetNodeN
4ed0: 61 6d 65 28 58 6d 6c 4e 6f 64 65 20 6e 6f 64 65  ame(XmlNode node
4ee0: 29 20 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 58  ) {.....return X
4ef0: 6d 6c 55 74 69 6c 73 2e 47 65 74 4e 6f 64 65 4e  mlUtils.GetNodeN
4f00: 61 6d 65 28 6e 6f 64 65 29 3b 0d 0a 09 09 7d 0d  ame(node);....}.
4f10: 0a 0d 0a 09 09 70 72 69 76 61 74 65 20 73 74 61  .....private sta
4f20: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 4e 6f  tic string GetNo
4f30: 64 65 44 69 73 70 6c 61 79 4e 61 6d 65 28 58 6d  deDisplayName(Xm
4f40: 6c 4e 6f 64 65 20 6e 6f 64 65 29 20 7b 0d 0a 09  lNode node) {...
4f50: 09 09 72 65 74 75 72 6e 20 58 6d 6c 55 74 69 6c  ..return XmlUtil
4f60: 73 2e 47 65 74 4e 6f 64 65 44 69 73 70 6c 61 79  s.GetNodeDisplay
4f70: 4e 61 6d 65 28 6e 6f 64 65 29 3b 0d 0a 09 09 7d  Name(node);....}
4f80: 0d 0a 0d 0a 09 09 23 65 6e 64 72 65 67 69 6f 6e  ......#endregion
4f90: 0d 0a 09 7d 0d 0a 7d 0d 0a                       ...}..}..