Example #1
0
        public void InvokeMemberSholdInvokeMethod()
        {
            // Given
            var baseInstance  = new BaseClass();
            var childInstance = new ChildClass();

            // Then
            object result;

            Assert.IsTrue(baseInstance.InvokeMember("BaseMethod", new object[] { '1' }, out result) &&
                          Equals(result, baseInstance.BaseMethod('1')));
            Assert.IsTrue(baseInstance.InvokeMember("BaseMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, baseInstance.BaseMethod('2', "2")));
            Assert.IsTrue(baseInstance.InvokeMember("BaseMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, baseInstance.BaseMethod('3', "3", 3)));
            Assert.IsTrue(baseInstance.InvokeMember("VirtualMethod", new object[] { '1' }, out result) &&
                          Equals(result, baseInstance.VirtualMethod('1')));
            Assert.IsTrue(baseInstance.InvokeMember("VirtualMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, baseInstance.VirtualMethod('2', "2")));
            Assert.IsTrue(baseInstance.InvokeMember("VirtualMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, baseInstance.VirtualMethod('3', "3", 3)));
            Assert.IsTrue(baseInstance.InvokeMember("BaseStaticMethod", new object[] { '1' }, out result) &&
                          Equals(result, BaseClass.BaseStaticMethod('1')));
            Assert.IsTrue(baseInstance.InvokeMember("BaseStaticMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, BaseClass.BaseStaticMethod('2', "2")));
            Assert.IsTrue(baseInstance.InvokeMember("BaseStaticMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, BaseClass.BaseStaticMethod('3', "3", 3)));
            Assert.IsTrue(childInstance.InvokeMember("BaseMethod", new object[] { '1' }, out result) &&
                          Equals(result, childInstance.BaseMethod('1')));
            Assert.IsTrue(childInstance.InvokeMember("BaseMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, childInstance.BaseMethod('2', "2")));
            Assert.IsTrue(childInstance.InvokeMember("BaseMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, childInstance.BaseMethod('3', "3", 3)));
            Assert.IsTrue(childInstance.InvokeMember("VirtualMethod", new object[] { '1' }, out result) &&
                          Equals(result, childInstance.VirtualMethod('1')));
            Assert.IsTrue(childInstance.InvokeMember("VirtualMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, childInstance.VirtualMethod('2', "2")));
            Assert.IsTrue(childInstance.InvokeMember("VirtualMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, childInstance.VirtualMethod('3', "3", 3)));
            Assert.IsTrue(childInstance.InvokeMember("BaseStaticMethod", new object[] { '1' }, out result) &&
                          Equals(result, BaseClass.BaseStaticMethod('1')));
            Assert.IsTrue(childInstance.InvokeMember("BaseStaticMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, BaseClass.BaseStaticMethod('2', "2")));
            Assert.IsTrue(childInstance.InvokeMember("BaseStaticMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, BaseClass.BaseStaticMethod('3', "3", 3)));
            Assert.IsTrue(childInstance.InvokeMember("ChildMethod", new object[] { '1' }, out result) &&
                          Equals(result, childInstance.ChildMethod('1')));
            Assert.IsTrue(childInstance.InvokeMember("ChildMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, childInstance.ChildMethod('2', "2")));
            Assert.IsTrue(childInstance.InvokeMember("ChildMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, childInstance.ChildMethod('3', "3", 3)));
            Assert.IsTrue(childInstance.InvokeMember("ChildStaticMethod", new object[] { '1' }, out result) &&
                          Equals(result, ChildClass.ChildStaticMethod('1')));
            Assert.IsTrue(childInstance.InvokeMember("ChildStaticMethod", new object[] { '2', "2" }, out result) &&
                          Equals(result, ChildClass.ChildStaticMethod('2', "2")));
            Assert.IsTrue(childInstance.InvokeMember("ChildStaticMethod", new object[] { '3', "3", 3 }, out result) &&
                          Equals(result, ChildClass.ChildStaticMethod('3', "3", 3)));
        }