| File: LockFile\BuildAction.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.ProjectModel\NuGet.ProjectModel.csproj (NuGet.ProjectModel) |
// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #nullable disable using System; using System.Collections.Concurrent; namespace NuGet.ProjectModel { public struct BuildAction : IEquatable<BuildAction> { private static ConcurrentDictionary<string, BuildAction> _knownBuildActions = new ConcurrentDictionary<string, BuildAction>(StringComparer.OrdinalIgnoreCase); public static readonly BuildAction None = Define(nameof(None)); public static readonly BuildAction Compile = Define(nameof(Compile)); public static readonly BuildAction Content = Define(nameof(Content)); public static readonly BuildAction EmbeddedResource = Define(nameof(EmbeddedResource)); public static readonly BuildAction ApplicationDefinition = Define(nameof(ApplicationDefinition)); public static readonly BuildAction Page = Define(nameof(Page)); public static readonly BuildAction Resource = Define(nameof(Resource)); public static readonly BuildAction SplashScreen = Define(nameof(SplashScreen)); public static readonly BuildAction DesignData = Define(nameof(DesignData)); public static readonly BuildAction DesignDataWithDesignTimeCreatableTypes = Define(nameof(DesignDataWithDesignTimeCreatableTypes)); public static readonly BuildAction CodeAnalysisDictionary = Define(nameof(CodeAnalysisDictionary)); public static readonly BuildAction AndroidAsset = Define(nameof(AndroidAsset)); public static readonly BuildAction AndroidResource = Define(nameof(AndroidResource)); public static readonly BuildAction BundleResource = Define(nameof(BundleResource)); public string Value { get; } public bool IsKnown { get; } private BuildAction(string value, bool isKnown) { Value = value; IsKnown = isKnown; } public static BuildAction Parse(string value) { BuildAction action; if (_knownBuildActions.TryGetValue(value, out action)) { return action; } return new BuildAction(value, false); } public override string ToString() { return $"{Value}"; } public bool Equals(BuildAction other) { return string.Equals(other.Value, Value, StringComparison.OrdinalIgnoreCase); } public override bool Equals(object obj) { return obj is BuildAction && Equals((BuildAction)obj); } public static bool operator ==(BuildAction left, BuildAction right) { return Equals(left, right); } public static bool operator !=(BuildAction left, BuildAction right) { return !Equals(left, right); } public override int GetHashCode() { if (string.IsNullOrEmpty(Value)) { return 0; } return StringComparer.OrdinalIgnoreCase.GetHashCode(Value); } private static BuildAction Define(string name) { var buildAction = new BuildAction(name, true); _knownBuildActions[name] = buildAction; return buildAction; } } }