| File: TemplateParameter.cs | Web Access |
| Project: src\sdk\src\TemplateEngine\Microsoft.TemplateEngine.Utils\Microsoft.TemplateEngine.Utils.csproj (Microsoft.TemplateEngine.Utils) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.TemplateEngine.Abstractions; namespace Microsoft.TemplateEngine.Utils { #pragma warning disable CS0618 // Type or member is obsolete - compatibility public class TemplateParameter : ITemplateParameter, IAllowDefaultIfOptionWithoutValue #pragma warning restore CS0618 // Type or member is obsolete { private string? _defaultIfOptionWithoutValue; public TemplateParameter( string name, string type, string datatype, TemplateParameterPrecedence? precedence = default, bool isName = false, string? defaultValue = null, string? defaultIfOptionWithoutValue = null, string? description = null, string? displayName = null, bool allowMultipleValues = false, IReadOnlyDictionary<string, ParameterChoice>? choices = null) { Name = name; Type = type; DataType = datatype; IsName = isName; DefaultValue = defaultValue; DefaultIfOptionWithoutValue = defaultIfOptionWithoutValue; Description = description; DisplayName = displayName; AllowMultipleValues = allowMultipleValues; Precedence = precedence ?? TemplateParameterPrecedence.Default; if (this.IsChoice()) { Choices = choices ?? new Dictionary<string, ParameterChoice>(); } } [Obsolete("Use Description instead.")] public string? Documentation => Description; public string Name { get; } [Obsolete("Use Precedence instead.")] public TemplateParameterPriority Priority => Precedence.PrecedenceDefinition.ToTemplateParameterPriority(); public TemplateParameterPrecedence Precedence { get; init; } = TemplateParameterPrecedence.Default; public string Type { get; } public bool IsName { get; init; } public string? DefaultValue { get; init; } public string DataType { get; } public string? DefaultIfOptionWithoutValue { get => _defaultIfOptionWithoutValue; init => _defaultIfOptionWithoutValue = value; } public IReadOnlyDictionary<string, ParameterChoice>? Choices { get; init; } public string? Description { get; init; } public string? DisplayName { get; init; } public bool AllowMultipleValues { get; init; } string? IAllowDefaultIfOptionWithoutValue.DefaultIfOptionWithoutValue { get => _defaultIfOptionWithoutValue; set => _defaultIfOptionWithoutValue = value; } public override string ToString() { return $"{Name} ({Type})"; } public override bool Equals(object obj) { if (ReferenceEquals(this, obj)) { return true; } if (obj is ITemplateParameter parameter) { return Equals(parameter); } return false; } public override int GetHashCode() => Name != null ? Name.GetHashCode() : 0; public bool Equals(ITemplateParameter other) => !string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(other.Name) && Name == other.Name; } }