File: System\IO\Packaging\PackagePartCollection.cs
Web Access
Project: src\runtime\src\libraries\System.IO.Packaging\src\System.IO.Packaging.csproj (System.IO.Packaging)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;

namespace System.IO.Packaging
{
    /// <summary>
    /// This class is used to get an enumerator for the Parts in a container.
    /// This is a part of the MMCF Packaging Layer APIs
    /// </summary>
    public class PackagePartCollection : IEnumerable<PackagePart>
    {
        #region Public Methods

        /// <summary>
        /// Returns an enumerator over all the Parts in the container
        /// </summary>
        /// <returns></returns>
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }



        /// <summary>
        /// Returns an enumerator over all the Parts in the container
        /// </summary>
        /// <returns></returns>
        IEnumerator<PackagePart> IEnumerable<PackagePart>.GetEnumerator()
        {
            return GetEnumerator();
        }

        /// <summary>
        /// Returns an enumerator over all the Parts in the Container
        /// </summary>
        /// <returns></returns>
        public IEnumerator<PackagePart> GetEnumerator()
        {
            //The Dictionary.Values property always returns a collection, even if empty. It never returns a null.
            return _partList.Values.GetEnumerator();
        }
        #endregion Public Methods

        #region Internal Constructor

        internal PackagePartCollection(SortedList<PackUriHelper.ValidatedPartUri, PackagePart> partList)
        {
            Debug.Assert(partList != null, "partDictionary parameter cannot be null");
            _partList = partList;
        }

        #endregion Internal Constructor

        #region Private Members

        private readonly SortedList<PackUriHelper.ValidatedPartUri, PackagePart> _partList;

        #endregion Private Members
    }
}