public void DynamicImplementationOfInterface()
        {
            DynamicProxyInvoker target = new DynamicProxyInvoker();

            target.DefineMethod("Foo",
                                (int bar, string suffix) => {
                return(bar.ToString() + " " + suffix);
            }
                                );

            IDemoService proxy1  = DynamicProxy.CreateInstance <IDemoService>(target);
            string       result1 = proxy1.Foo(123, "Hello");

            Assert.AreEqual("123 Hello", result1);
        }
        public void DynamicSpecializationOfClass()
        {
            DynamicProxyInvoker target = new DynamicProxyInvoker();

            target.DefineMethod("GetMyName",
                                () => {
                return("Newton");
            }
                                );

            AnotherServiceToHijack proxy2 = DynamicProxy.CreateInstance <AnotherServiceToHijack>(target);
            string result2 = proxy2.GetMyName();

            Assert.AreEqual("Newton", result2);
        }