так что я работал над небольшим количеством POC, я хочу иметь возможность получать строки кода из исключений в любом месте кода, когда я его скомпилировал, поэтому я сейчас пытаюсь увидеть, что я могу сделать с
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
, и я планировал сделать это с
[CallerLineNumber] int lineNumber = 0, [CallerMemberName] string caller = null
. Я уже подтвердил в стеке вызовов, что он вызывает делегированную функцию напрямую, но, очевидно, подпись не соответствует, это проблема.я не могу изменить подпись без изменения типа UnhandledException, но я не могу унаследовать класс AppDomain (запечатан), и я не могу думать о каких-либо других идеях, чтобы обойти эту проблему, у меня
using System;
using System.Collections.Generic;
using System.Diagnostics.Tracing;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
namespace TestApp
{
static class Program
{
public delegate void UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e, [CallerLineNumber] int lineNumber = 0, [CallerMemberName] string caller = null);
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
UnhandledExceptionEventHandler c = Function_I_Want_To_Delegate;
}
static void Function_I_Want_To_Delegate(object sender, UnhandledExceptionEventArgs e, [CallerLineNumber] int lineNumber = 0, [CallerMemberName] string caller = null)
{
}
}
(Подробнее :) Фото всего кода