public void Can_Create_And_Invoke_3_Arg_Func()
        {
            A             target = new A();
            MethodInvoker func   = MethodInvokerHelper.CreateInvoker(func3);
            object        result = func(target, 1, 2L, 3F);

            Assert.AreEqual("123", result);
        }
        public void Can_Create_And_Invoke_3_Arg_Action()
        {
            A             target = new A();
            MethodInvoker action = MethodInvokerHelper.CreateInvoker(action3);

            action(target, 1, 2L, 3F);
            Assert.AreEqual("123", target.LastResult);
        }
        public void Can_Create_And_Invoke_0_Arg_Action()
        {
            A             target = new A();
            MethodInvoker action = MethodInvokerHelper.CreateInvoker(action0);

            action(target);
            Assert.AreEqual("0", target.LastResult);
        }
        public void Can_Create_And_Invoke_0_Arg_Func()
        {
            A             target = new A();
            MethodInvoker func   = MethodInvokerHelper.CreateInvoker(func0);
            object        result = func(target);

            Assert.AreEqual("0", result);
        }
        private static void testMethodInvocationByListOfArguments()
        {
            var listOfArguments = new List <dynamic>();

            MethodInvokerHelper.CallMethod(listOfArguments, "Method1", typeof(TestClass1));

            listOfArguments.Add(500);
            MethodInvokerHelper.CallMethod(listOfArguments, "Method1", typeof(TestClass1));

            listOfArguments.Add("FooBarBaz");
            MethodInvokerHelper.CallMethod(listOfArguments, "Method1", typeof(TestClass1));

            //listOfArguments.Add("Throw Error");
            //MethodInvokerHelper.CallMethod(listOfArguments, "Method1", typeof(TestClass1));
        }