using System; namespace Syntriax.Engine.Core; public static class DelegateHelpers { public static void InvokeSafe(this Delegate @delegate, params object?[] args) { if (@delegate is null) return; foreach (Delegate invocation in @delegate.GetInvocationList()) try { invocation.DynamicInvoke(args); } catch (Exception exception) { string methodCallRepresentation = $"{invocation.Method.DeclaringType?.FullName}.{invocation.Method.Name}({string.Join(", ", args)})"; Console.WriteLine($"Unexpected exception on invocation of method {methodCallRepresentation}:{Environment.NewLine}{exception.InnerException}"); } } }