public MainWindow() { InitializeComponent(); DataContext = new FlowListViewModel(); EventAggregator.FlowExecutionFailed += OnFlowExecutionFailed; LogScrollViewer.ScrollChanged += ScrollViewer_ScrollChanged; }
public FlowGroupViewModel(string name, IEnumerable<Type> flowTypes, FlowListViewModel flowListViewModel) { Name = name; Flows = new ObservableCollection<FlowViewModel>(); var allowedParameterTypes = new[] { typeof(int), typeof(int?), typeof(decimal), typeof(decimal?), typeof(short), typeof(short?), typeof(long), typeof(long?), typeof(float), typeof(float?), typeof(bool), typeof(bool?), typeof(string), typeof(char), typeof(char?), typeof(DateTime), typeof(DateTime?) }; var options = new AutomationFlowRunnerOptions() { ResultListener = flowListViewModel }; var orderedFlowTypes = flowTypes .OrderBy(x => x.GetCustomAttribute<UIExecutableAttribute>().OptionalDependencyGroupOrder ?? -1) .ThenBy(FlowViewModel.GetDisplayName); foreach (var flowType in orderedFlowTypes) { var constructors = flowType.GetConstructors().OrderByDescending(x => x.GetParameters().Length); foreach (var constructorInfo in constructors) { var parameters = constructorInfo.GetParameters(); if (parameters.All(x => allowedParameterTypes.Contains(x.ParameterType))) { var parameterViewModels = parameters.Select(x => new FlowParameterViewModel(x)); var flowViewModel = new FlowViewModel(flowType, constructorInfo, parameterViewModels, options); Flows.Add(flowViewModel); } } } }