public async Task Start(SortingMethod method, SortTargetKind target) { var vm = (MainWindowViewModel)DataContext; vm.Method = method; vm.TargetKind = target; await vm.Sort(); }
public async Task Sort(SortTargetKind kind) { Reporter.SortingMethod = Method; var method = typeof(Sorter).GetMethod(Enum.GetName(typeof(SortingMethod), Method) + "Sort"); SortedObject obj; if (kind == SortTargetKind.Random) { obj = new SortedObject(Reporter, Enumerable.Range(1, 50).OrderBy(x => random.Next())); } else if (kind == SortTargetKind.Ascending) { obj = new SortedObject(Reporter, Enumerable.Range(1, 50)); } else { obj = new SortedObject(Reporter, Enumerable.Range(1, 50).Reverse()); } await(Task) method.Invoke(null, new object[] { obj }); }