Given.Common.TestStateManager.Cleanup C# (CSharp) Method

Cleanup() public method

public Cleanup ( ) : void
return void
        public void Cleanup()
        {
            try
            {
                foreach (var given in Givens.Select(x => new { Method = x.Key, Text = x.Value }))
                {
                    if (!Context.CleanUps.ContainsKey(given.Text)) continue;

                    var result = Context.TestRunContext[TestType.Name + given.Text];

                    //if it doesn't take arguments just execute it
                    if (!Context.CleanUps[given.Text].Method.GetParameters().Any())
                    {
                        Context.CleanUps[given.Text].DynamicInvoke();
                        continue;
                    }

                    //if it takes one argument pass in the result
                    if (Context.CleanUps[given.Text].Method.GetParameters().Count() == 1)
                    {
                        Context.CleanUps[given.Text].DynamicInvoke(result);
                        continue;
                    }

                    //if it takes multiple arguments parse the tuple and pass them in
                    var count = result.GetType().GetGenericArguments().Count();
                    if (count > 0)
                    {
                        var type = result.GetType();
                        var argList = new List<object>();

                        for (int i = 1; i <= count; i++)
                        {
                            argList.Add(type.GetProperty("Item" + i).GetValue(result, null));
                        }

                        Context.CleanUps[given.Text].DynamicInvoke(argList.ToArray());
                        continue;
                    }

                    Console.WriteLine("Found cleanup for {0} but didn't know how to call it", given.Text);
                }

                foreach (var teardownMethod in _teardownMethods)
                {
                    teardownMethod.Invoke();
                }
            }
            catch
            {
            }
        }