The Labs \ Source Viewer \ SSCLI \ System.Xml.Xsl \ XsltArgumentList

  1. //------------------------------------------------------------------------------
  2. // <copyright file="XsltArgumentList.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. //------------------------------------------------------------------------------
  15. using System.Collections;
  16. using System.Security.Permissions;
  17. namespace System.Xml.Xsl
  18. {
  19.    
  20.     public abstract class XsltMessageEncounteredEventArgs : EventArgs
  21.     {
  22.         public abstract string Message {
  23.             get;
  24.         }
  25.     }
  26.    
  27.     public delegate void XsltMessageEncounteredEventHandler(object sender, XsltMessageEncounteredEventArgs e);
  28.    
  29.     public class XsltArgumentList
  30.     {
  31.         private Hashtable parameters = new Hashtable();
  32.         private Hashtable extensions = new Hashtable();
  33.        
  34.         // Used for reporting xsl:message's during execution
  35.         internal XsltMessageEncounteredEventHandler xsltMessageEncountered = null;
  36.        
  37.         public XsltArgumentList()
  38.         {
  39.         }
  40.        
  41.         public object GetParam(string name, string namespaceUri)
  42.         {
  43.             return this.parameters[new XmlQualifiedName(name, namespaceUri)];
  44.         }
  45.        
  46.         public object GetExtensionObject(string namespaceUri)
  47.         {
  48.             return this.extensions[namespaceUri];
  49.         }
  50.        
  51.         public void AddParam(string name, string namespaceUri, object parameter)
  52.         {
  53.             CheckArgumentNull(name, "name");
  54.             CheckArgumentNull(namespaceUri, "namespaceUri");
  55.             CheckArgumentNull(parameter, "parameter");
  56.            
  57.             XmlQualifiedName qname = new XmlQualifiedName(name, namespaceUri);
  58.             qname.Verify();
  59.             this.parameters.Add(qname, parameter);
  60.         }
  61.        
  62.         public void AddExtensionObject(string namespaceUri, object extension)
  63.         {
  64.             CheckArgumentNull(namespaceUri, "namespaceUri");
  65.             CheckArgumentNull(extension, "extension");
  66.             this.extensions.Add(namespaceUri, extension);
  67.         }
  68.        
  69.         public object RemoveParam(string name, string namespaceUri)
  70.         {
  71.             XmlQualifiedName qname = new XmlQualifiedName(name, namespaceUri);
  72.             object parameter = this.parameters[qname];
  73.             this.parameters.Remove(qname);
  74.             return parameter;
  75.         }
  76.        
  77.         public object RemoveExtensionObject(string namespaceUri)
  78.         {
  79.             object extension = this.extensions[namespaceUri];
  80.             this.extensions.Remove(namespaceUri);
  81.             return extension;
  82.         }
  83.        
  84.         public event XsltMessageEncounteredEventHandler XsltMessageEncountered {
  85.             add { xsltMessageEncountered += value; }
  86.             remove { xsltMessageEncountered -= value; }
  87.         }
  88.        
  89.         public void Clear()
  90.         {
  91.             this.parameters.Clear();
  92.             this.extensions.Clear();
  93.             xsltMessageEncountered = null;
  94.         }
  95.        
  96.         private static void CheckArgumentNull(object param, string paramName)
  97.         {
  98.             if (param == null) {
  99.                 throw new ArgumentNullException(paramName);
  100.             }
  101.         }
  102.     }
  103. }

Developer Fusion