namespace OpenTap { /// This type of mixin gives access to process an output just before it gets assigned. public interface IAssignOutputMixin : IMixin { /// Invoked just before the output is assigned. void OnAssigningOutput(AssignOutputEventArgs args); } class AssignOutputEvent: MixinEvent { public static object Invoke(ITestStepParent step, object value, IMemberData member) => Invoke(step, (v, args) => v.OnAssigningOutput(args), new AssignOutputEventArgs(step, value, member)).Value; } /// Event args for ITestStepPostRun mixin. public sealed class AssignOutputEventArgs { /// The step for which the event happens. public ITestStepParent TestStep { get; } /// The member that the output is assigned to. public IMemberData Member { get; } /// The value that is going to be assigned. This can be overwritten. public object Value { get; set; } internal AssignOutputEventArgs(ITestStepParent step, object value, IMemberData member) => (TestStep, Value, Member) = (step, value, member); } }