/// <summary> /// Since no <see cref="ExecuteHandler"/> is provided as a target, and a value is required to /// return, this defaults to throwing a <see cref="NotImplementedException"/> if no /// behavior returns before reaching the target. /// </summary> public static T?Execute <T>(this BehaviorPipeline pipeline, IMethodInvocation invocation) => (T?)pipeline.Invoke(invocation, true).ReturnValue;
/// <summary> /// Executes the pipeline and returns a <see cref="Ref{T}"/> to it. If the returned /// value from the pipeline execution is already a <see cref="Ref{Type}"/>, it's /// returned as-is, otherwise, the <typeparamref name="T"/> value is wrapped in a new /// <see cref="Ref{T}"/>. /// </summary> public static Ref <T> ExecuteRef <T>(this BehaviorPipeline pipeline, IMethodInvocation invocation) => pipeline.Invoke(invocation, true).AsRef <T>();
public static IMethodReturn Execute(this BehaviorPipeline pipeline, IMethodInvocation invocation) => pipeline.Invoke(invocation, true);