qamp/Qrakhen.Qamp.Core/Abstractions/IDebug.cs

29 lines
648 B
C#

using System.Runtime.CompilerServices;
namespace Qrakhen.Qamp.Core.Abstractions;
public interface IDebug<out T>
{
T Debug(DebugLevel level = DebugLevel.None);
}
public interface IDebug<in TContext, out TOut>
{
TOut Debug(TContext? context, DebugLevel level = DebugLevel.None);
}
public enum DebugLevel
{
None = 0,
Mild = 1,
Strong = 2,
Verbose = 3
}
public static class Debugger
{
public static string GetContextString(object? origin, [CallerMemberName] string? caller = null)
{
return $"{{Debugger::Builder}}: [{origin?.ToString() ?? "null"}] <{origin?.GetType().Name ?? "null"}> ({caller ?? "null"})";
}
}