public void MethodValid()
        {
            object name = "Francine";

            var reflection = new PhantomReflection(name);

            var valid = reflection.IsMethodValid("Split");

            Assert.AreEqual(true, valid);
        }
        public void InvokeMethod()
        {
            object name = "Arthur";

            var reflection = new PhantomReflection(name);

            var upperName = reflection.InvokeMethod("ToUpper");

            Assert.AreEqual("ARTHUR", upperName);
        }
        public void Indexer()
        {
            object person = new Person { Name = "Wagner" };

            var reflection = new PhantomReflection(person);

            reflection["Age"] = 24;

            Assert.AreEqual("Wagner", reflection["Name"]);
            Assert.AreEqual(24, reflection["Age"]);
        }
        public void InvokeMethodIfIsValid()
        {
            object name = "Arthur";

            var reflection = new PhantomReflection(name);

            var validResult = reflection.InvokeMethodIfIsValid("ToUpper");

            var invalidResult = reflection.InvokeMethodIfIsValid("MethodNotFound");

            Assert.AreEqual("ARTHUR", validResult);
            Assert.IsNull(invalidResult);
        }