File: FrameworkFork\Microsoft.Xml\Xml\Xslt\XsltArgumentList.cs
Web Access
Project: src\src\dotnet-svcutil\lib\src\dotnet-svcutil-lib.csproj (dotnet-svcutil-lib)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Collections;
// using System.Security.Permissions;
 
namespace Microsoft.Xml.Xsl
{
    using System;
    using Microsoft.Xml;
 
 
    public abstract class XsltMessageEncounteredEventArgs : EventArgs
    {
        public abstract string Message { get; }
    }
 
    public delegate void XsltMessageEncounteredEventHandler(object sender, XsltMessageEncounteredEventArgs e);
 
    public class XsltArgumentList
    {
        private Hashtable _parameters = new Hashtable();
        private Hashtable _extensions = new Hashtable();
 
        // Used for reporting xsl:message's during execution
        internal XsltMessageEncounteredEventHandler xsltMessageEncountered = null;
 
        public XsltArgumentList() { }
 
        public object GetParam(string name, string namespaceUri)
        {
            return _parameters[new XmlQualifiedName(name, namespaceUri)];
        }
 
        public object GetExtensionObject(string namespaceUri)
        {
            return _extensions[namespaceUri];
        }
 
        public void AddParam(string name, string namespaceUri, object parameter)
        {
            CheckArgumentNull(name, "name");
            CheckArgumentNull(namespaceUri, "namespaceUri");
            CheckArgumentNull(parameter, "parameter");
 
            XmlQualifiedName qname = new XmlQualifiedName(name, namespaceUri);
            qname.Verify();
            _parameters.Add(qname, parameter);
        }
 
        public void AddExtensionObject(string namespaceUri, object extension)
        {
            CheckArgumentNull(namespaceUri, "namespaceUri");
            CheckArgumentNull(extension, "extension");
            _extensions.Add(namespaceUri, extension);
        }
 
        public object RemoveParam(string name, string namespaceUri)
        {
            XmlQualifiedName qname = new XmlQualifiedName(name, namespaceUri);
            object parameter = _parameters[qname];
            _parameters.Remove(qname);
            return parameter;
        }
 
        public object RemoveExtensionObject(string namespaceUri)
        {
            object extension = _extensions[namespaceUri];
            _extensions.Remove(namespaceUri);
            return extension;
        }
 
        public event XsltMessageEncounteredEventHandler XsltMessageEncountered
        {
            add
            {
                xsltMessageEncountered += value;
            }
            remove
            {
                xsltMessageEncountered -= value;
            }
        }
 
        public void Clear()
        {
            _parameters.Clear();
            _extensions.Clear();
            xsltMessageEncountered = null;
        }
 
        private static void CheckArgumentNull(object param, string paramName)
        {
            if (param == null)
            {
                throw new ArgumentNullException(paramName);
            }
        }
    }
}