DotNext by Roman Sakno

<PackageReference Include="DotNext" Version="2.0.0" />

 ValueAction<T1, T2, T3>

public struct ValueAction<T1, T2, T3> : IValueDelegate<Action<T1, T2, T3>>, ICallable<Action<T1, T2, T3>>, ICallable, IConvertible<Action<T1, T2, T3>>, ISupplier<Action<T1, T2, T3>>, IEquatable<ValueAction<T1, T2, T3>>
Represents a pointer to the method with three parameters and Void return type.
public bool IsEmpty { get; }

Indicates that this delegate doesn't refer to any method.

public object Target { get; }

Gets the object on which the current pointer invokes the method.

public ValueAction(MethodInfo method)

Initializes a new pointer to the method.

public ValueAction(Action<T1, T2, T3> action, bool wrap = false)

Initializes a new pointer based on extracted pointer from the delegate.

public static bool op_Equality(ref ValueAction first, ref ValueAction second)

Determines whether the pointers represent the same method.

public static Action<T1, T2, T3> op_Explicit(ref ValueAction pointer)

Converts this pointer into Action<T, U, V>.

public static bool op_Inequality(ref ValueAction first, ref ValueAction second)

Determines whether the pointers represent different methods.

public bool Equals(ValueAction<T1, T2, T3> other)

Determines whether this object points to the same method as other object.

public void Invoke(T1 arg1, T2 arg2, T3 arg3)

Invokes method by pointer.

public Action<T1, T2, T3> ToDelegate()

Converts this pointer into Action<T, U, V>.