in src/Epam.GraphQL/Diagnostics/Internals/DiagnosticsExtensions.cs [15:51]
public static string Print(this MethodBase methodBase)
{
if (TryGetLocalName(methodBase.Name, out var methodBody))
{
return methodBody;
}
if (IsAnonymous(methodBase.Name))
{
return $"{methodBase.PrintArguments()} => ...";
}
return methodBase.Name;
static bool IsAnonymous(string methodName)
{
return methodName.Contains('<', StringComparison.Ordinal) && methodName.Contains(">b__", StringComparison.Ordinal);
}
static bool TryGetLocalName(string methodName, [NotNullWhen(true)] out string? localName)
{
if (methodName.Contains('<', StringComparison.Ordinal))
{
var startPos = methodName.IndexOf(">g__", StringComparison.Ordinal);
var endPos = methodName.IndexOf("|", StringComparison.Ordinal);
if (startPos >= 0 && endPos >= 0)
{
localName = methodName.Substring(startPos + 4, endPos - startPos - 4);
return true;
}
}
localName = null;
return false;
}
}