diff --git a/AyCode.Core/AyCode.Core.csproj b/AyCode.Core/AyCode.Core.csproj index b703459..3a34c73 100644 --- a/AyCode.Core/AyCode.Core.csproj +++ b/AyCode.Core/AyCode.Core.csproj @@ -10,10 +10,6 @@ - - - - diff --git a/AyCode.Core/Extensions/ExceptionExtensions.cs b/AyCode.Core/Extensions/ExceptionExtensions.cs new file mode 100644 index 0000000..1269343 --- /dev/null +++ b/AyCode.Core/Extensions/ExceptionExtensions.cs @@ -0,0 +1,26 @@ +using AyCode.Utils.Extensions; + +namespace AyCode.Core.Extensions; + +public static class ExceptionExtensions +{ + public static void GetCategoryAndMemberNameFromStackTraceString(this Exception? exception, out string? memberName, out string? categoryName) + { + categoryName = null; + memberName = null; + + if (exception == null) return; + + var stackTraceString = exception.StackTrace ?? exception.InnerException?.StackTrace; + if (stackTraceString.IsNullOrWhiteSpace()) return; + + var stackSplit = stackTraceString.Split(" in "); + if (stackSplit.Length <= 0) return; + + stackSplit = stackSplit[0].Split('.'); + if (stackSplit.Length <= 1) return; + + memberName = stackSplit[^1]; //new StackTrace(exception).GetFrame(0)?.GetMethod()?.Name; + categoryName = stackSplit[^2]; //exception.Source + } +} \ No newline at end of file