File: BootstrapperUtil\PackageCollection.cs
Web Access
Project: ..\..\..\src\Tasks\Microsoft.Build.Tasks.csproj (Microsoft.Build.Tasks.Core)
// 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;
 
#nullable disable
 
namespace Microsoft.Build.Tasks.Deployment.Bootstrapper
{
    internal class PackageCollection : IEnumerable
    {
        private readonly List<Package> _list = new List<Package>();
        private readonly Dictionary<string, Package> _cultures = new Dictionary<string, Package>(StringComparer.OrdinalIgnoreCase);
 
        public Package Item(int index)
        {
            return _list[index];
        }
 
        public Package Package(string culture)
        {
            return _cultures.TryGetValue(culture, out Package package) ? package : null;
        }
 
        public int Count => _list.Count;
 
        internal void Add(Package package)
        {
            if (!_cultures.ContainsKey(package.Culture))
            {
                _list.Add(package);
                _cultures.Add(package.Culture, package);
            }
            else
            {
                Debug.Fail("Package with culture " + package.Culture + " has already been added.");
            }
        }
 
        public IEnumerator GetEnumerator()
        {
            return _list.GetEnumerator();
        }
    }
}