File: Commands\PackageReferenceCommands\ListPackage\FrameworkPackages.cs
Web Access
Project: src\src\nuget-client\src\NuGet.Core\NuGet.CommandLine.XPlat\NuGet.CommandLine.XPlat.csproj (NuGet.CommandLine.XPlat)
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

#nullable enable

using System;
using System.Collections.Generic;

namespace NuGet.CommandLine.XPlat
{
    /// <summary>
    /// A class to simplify holding all of the information
    /// of a framework packages when using list
    /// </summary>
    internal class FrameworkPackages
    {
        public string Framework { get; }
        public string TargetAlias { get; }
        public IEnumerable<InstalledPackageReference> TopLevelPackages { get; set; }
        public IEnumerable<InstalledPackageReference> TransitivePackages { get; set; }

        /// <summary>
        /// A constructor that takes a framework name, and
        /// initializes the top-level and transitive package
        /// lists
        /// </summary>
        /// <param name="framework">Framework name</param>
        /// <param name="targetAlias">Target alias</param>
        public FrameworkPackages(string framework, string targetAlias) : this(framework, targetAlias, new List<InstalledPackageReference>(), new List<InstalledPackageReference>())
        {

        }

        /// <summary>
        /// A constructor that takes a framework name, a list
        /// of top-level packages, and a list of transitive
        /// packages
        /// </summary>
        /// <param name="framework">Framework name that we have packages for</param>
        /// <param name="targetAlias">Target alias</param>
        /// <param name="topLevelPackages">Top-level packages. Shouldn't be null</param>
        /// <param name="transitivePackages">Transitive packages. Shouldn't be null</param>
        public FrameworkPackages(string framework,
            string targetAlias,
            IEnumerable<InstalledPackageReference> topLevelPackages,
            IEnumerable<InstalledPackageReference> transitivePackages)
        {
            Framework = framework ?? throw new ArgumentNullException(nameof(framework));
            TargetAlias = targetAlias ?? throw new ArgumentNullException(nameof(targetAlias));
            TopLevelPackages = topLevelPackages ?? throw new ArgumentNullException(nameof(topLevelPackages));
            TransitivePackages = transitivePackages ?? throw new ArgumentNullException(nameof(transitivePackages));
        }
    }
}