19 lines
794 B
C#
19 lines
794 B
C#
using System;
|
|
|
|
namespace Syntriax.Engine.Core;
|
|
|
|
public static class DelegateExtensions
|
|
{
|
|
[Obsolete($"{nameof(InvokeSafe)} causes memory allocation, please use Invoke() instead.")]
|
|
public static void InvokeSafe(this Delegate @delegate, params object?[] args)
|
|
{
|
|
foreach (Delegate invocation in Delegate.EnumerateInvocationList(@delegate))
|
|
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}");
|
|
}
|
|
}
|
|
}
|