Переопределить события System / AppDomain? - PullRequest
0 голосов
/ 20 октября 2018

так что я работал над небольшим количеством 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)
    {

    }
}

(Подробнее :) Фото всего кода

...