File: System\Security\Cryptography\Xml\CanonicalXmlNodeList.cs
Web Access
Project: src\src\libraries\System.Security.Cryptography.Xml\src\System.Security.Cryptography.Xml.csproj (System.Security.Cryptography.Xml)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Collections;
using System.Xml;
 
namespace System.Security.Cryptography.Xml
{
    internal sealed class CanonicalXmlNodeList : XmlNodeList, IList
    {
        private readonly ArrayList _nodeArray;
 
        internal CanonicalXmlNodeList()
        {
            _nodeArray = new ArrayList();
        }
 
        public override XmlNode Item(int index)
        {
            return (XmlNode)_nodeArray[index]!;
        }
 
        public override IEnumerator GetEnumerator()
        {
            return _nodeArray.GetEnumerator();
        }
 
        public override int Count
        {
            get { return _nodeArray.Count; }
        }
 
        // IList methods
        public int Add(object? value)
        {
            if (!(value is XmlNode))
                throw new ArgumentException(SR.Cryptography_Xml_IncorrectObjectType, "node");
            return _nodeArray.Add(value);
        }
 
        public void Clear()
        {
            _nodeArray.Clear();
        }
 
        public bool Contains(object? value)
        {
            return _nodeArray.Contains(value);
        }
 
        public int IndexOf(object? value)
        {
            return _nodeArray.IndexOf(value);
        }
 
        public void Insert(int index, object? value)
        {
            if (!(value is XmlNode))
                throw new ArgumentException(SR.Cryptography_Xml_IncorrectObjectType, nameof(value));
            _nodeArray.Insert(index, value);
        }
 
        public void Remove(object? value)
        {
            _nodeArray.Remove(value);
        }
 
        public void RemoveAt(int index)
        {
            _nodeArray.RemoveAt(index);
        }
 
        public bool IsFixedSize
        {
            get { return _nodeArray.IsFixedSize; }
        }
 
        public bool IsReadOnly
        {
            get { return _nodeArray.IsReadOnly; }
        }
 
        object? IList.this[int index]
        {
            get { return _nodeArray[index]; }
            set
            {
                if (!(value is XmlNode))
                    throw new ArgumentException(SR.Cryptography_Xml_IncorrectObjectType, nameof(value));
                _nodeArray[index] = value;
            }
        }
 
        public void CopyTo(Array array, int index)
        {
            _nodeArray.CopyTo(array, index);
        }
 
        public object SyncRoot
        {
            get { return _nodeArray.SyncRoot; }
        }
 
        public bool IsSynchronized
        {
            get { return _nodeArray.IsSynchronized; }
        }
    }
}