public void ProxyForHelloWorldChinaServiceTest()
        {
            //测试代理类
            var    proxy  = DynamicProxy.Proxy <IHelloWorldService, HelloWorldChinaService>();
            String result = proxy.SayHelloWorld();

            Assert.Equal(new HelloWorldChinaService().SayHelloWorld(), result);
            result = proxy.SayHelloWorld(Language.CN);

            Assert.Equal(new HelloWorldChinaService().SayHelloWorld(Language.CN), result);
        }
        public void ProxyInterceptorTest()
        {
            //测试代理类
            var proxy       = DynamicProxy.Proxy <IHelloWorldService, HelloWorldChinaService>();
            var invokeProxy = (InvokeProxy <HelloWorldChinaService>)proxy;

            invokeProxy.BeforeExecute += (sender, e) =>
            {
                //验证拦截成功。
                Assert.NotNull(sender);
                Assert.NotNull(e);
                var parametersValue = e.Args;
                if (parametersValue.Length > 0)
                {
                    //验证参数是否是 Language.CN
                    Assert.Equal(Language.CN, parametersValue[0]);
                }
            };
            String result = proxy.SayHelloWorld();

            result = proxy.SayHelloWorld(Language.CN);
        }
        public void ProxyInterceptorChangesParamValueTest()
        {
            //测试代理类
            var proxy       = DynamicProxy.Proxy <IHelloWorldService, HelloWorldChinaService>();
            var invokeProxy = (InvokeProxy <HelloWorldChinaService>)proxy;

            invokeProxy.BeforeExecute += (sender, e) =>
            {
                var s               = sender.ToString();
                var parameters      = e.MethodInfo.GetParameters();
                var parametersValue = e.Args;
                if (parametersValue.Length > 0)
                {
                    //测试拦截为EN
                    parametersValue[0] = Language.EN;
                }
                var ee = e.ToString();
            };
            String result = proxy.SayHelloWorld();

            Assert.Equal(new HelloWorldChinaService().SayHelloWorld(), result);
            result = proxy.SayHelloWorld(Language.CN);
            Assert.NotEqual(new HelloWorldChinaService().SayHelloWorld(Language.CN), result);
        }