File: Model\LoggingMethod.cs
Web Access
Project: src\src\Generators\Microsoft.Gen.Logging\Microsoft.Gen.Logging.csproj (Microsoft.Gen.Logging)
// 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.Generic;
using System.Diagnostics;
using System.Linq;
 
namespace Microsoft.Gen.Logging.Model;
 
/// <summary>
/// A logger method in a logger type.
/// </summary>
[DebuggerDisplay("{Name}")]
internal sealed class LoggingMethod
{
    public readonly List<LoggingMethodParameter> Parameters = [];
    public readonly List<string> Templates = [];
    public string Name = string.Empty;
    public string Message = string.Empty;
    public int? Level;
    public int? EventId;
    public string? EventName;
    public bool SkipEnabledCheck;
    public bool IsExtensionMethod;
    public bool IsStatic;
    public string Modifiers = string.Empty;
    public string LoggerMember = "_logger";
    public bool LoggerMemberNullable;
    public bool HasXmlDocumentation;
 
    public LoggingMethodParameter? GetParameterForTemplate(string templateName)
    {
        foreach (var p in Parameters)
        {
            if (templateName.Equals(p.TagName, StringComparison.OrdinalIgnoreCase))
            {
                return p;
            }
        }
 
        return null;
    }
 
    public List<string> GetTemplatesForParameter(LoggingMethodParameter lp)
    {
        HashSet<string> templates = [];
        foreach (var t in Templates)
        {
            if (lp.TagName.Equals(t, StringComparison.OrdinalIgnoreCase))
            {
                _ = templates.Add(t);
            }
        }
 
        return templates.ToList();
    }
 
    public List<string> GetTemplatesForParameter(string parameterName)
    {
        foreach (var p in Parameters)
        {
            if (parameterName == p.ParameterName)
            {
                return GetTemplatesForParameter(p);
            }
        }
 
        return [];
    }
}