using OpenTap; using OpenTap.Addin; using OpenTap.Addin.Annotation; using System.Collections.Concurrent; using System.Collections.ObjectModel; using System.Xml.Serialization; namespace AddInPlugin { [AllowAnyChild] public class ContextStep : TestStep { private ObservableCollection variables = new ObservableCollection(); [Display("参数")] [TreeData] public ObservableCollection Variables { get => variables; set { variables = value; OnPropertyChanged(nameof(Variables)); } } [XmlIgnore] private VariableContext variableContext; public override void PrePlanRun() { ConcurrentDictionary runtimeVariablePool = new ConcurrentDictionary(); foreach (var data in Variables) { RuntimeVariable runTime = data.ToRuntime(); if (runTime == null) continue; runtimeVariablePool[runTime.Name] = runTime; } variableContext = new VariableContext(runtimeVariablePool); } public VariableContext GetContextVariables() { return variableContext; } public override void Run() { RunChildSteps(); } } }