File: test\Generators\Microsoft.Gen.Logging\TestClasses\TagProviderWithObjectExtensions.cs
Web Access
Project: src\test\Generators\Microsoft.Gen.Logging\Generated\Microsoft.Gen.Logging.Generated.Tests.csproj (Microsoft.Gen.Logging.Generated.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Extensions.Logging;
 
namespace TestClasses
{
#pragma warning disable SA1402 // File may only contain a single type
 
    internal static partial class TagProviderWithObjectExtensions
    {
        [LoggerMessage(int.MaxValue, LogLevel.Warning, "Custom provided properties for {Param}.")]
        internal static partial void OneParam(
            ILogger logger,
            [TagProvider(typeof(CustomProviderWithObject), nameof(CustomProviderWithObject.ProvideProperties))] object param);
 
        [LoggerMessage(int.MinValue, LogLevel.Warning, "Custom provided properties for both complex params and {StringParam}.")]
        internal static partial void TwoParams(
            ILogger logger,
            string stringParam,
            [TagProvider(typeof(CustomProviderWithObject), nameof(CustomProviderWithObject.ProvideProperties))] object param,
            [TagProvider(typeof(CustomProviderWithObject), nameof(CustomProviderWithObject.ProvideOtherProperties))] object param2);
    }
 
    internal static class CustomProviderWithObject
    {
        public static void ProvideProperties(ITagCollector list, object? param)
        {
            // This condition is here only for testing purposes:
            if (param is null)
            {
                return;
            }
 
            list.Add(nameof(object.ToString), param + " ProvidePropertiesCall");
        }
 
        public static void ProvideOtherProperties(ITagCollector list, object? param)
        {
            list.Add(nameof(object.ToString), param + " ProvideOtherPropertiesCall");
            list.Add("Type", param?.GetType());
        }
    }
}