示例#1
0
        public void AddForwardingExplicitInterfaceMethod()
        {
            var proxyBuilder = new ForwardingProxyBuilder("AddForwardingExplicitInterfaceMethod",
                                                          ModuleScope, typeof(ProxiedChild), new[] { typeof(IAmbigous1) });

            var methodInfo = typeof(IAmbigous1).GetMethod("StringTimes");

            proxyBuilder.AddForwardingExplicitInterfaceMethod(methodInfo);

            // Create proxy instance, initializing it with class to be proxied
            var    proxied = new ProxiedChild();
            object proxy   = proxyBuilder.CreateInstance(proxied);

            Assert.That(((IAmbigous1)proxied).StringTimes("aBc", 4), Is.EqualTo("aBcaBcaBcaBc"));
            Assert.That(((IAmbigous1)proxy).StringTimes("aBc", 4), Is.EqualTo("aBcaBcaBcaBc"));
        }
        public void BuildProxyType_ObjectMethods()
        {
            var knownBaseType             = typeof(Proxied);
            var typeFilter                = new TypeLevelTypeFilter(new[] { knownBaseType });
            var proxiedType               = typeof(ProxiedChild);
            var stableBindingProxyBuilder = new StableBindingProxyBuilder(proxiedType, typeFilter, CreateModuleScope("BuildProxyType_ObjectMethods"));
            var proxyType = stableBindingProxyBuilder.BuildProxyType();

            var proxied = new ProxiedChild();
            var proxy   = Activator.CreateInstance(proxyType, proxied);

            Assert.That(InvokeMethod(proxy, "ToString"), Is.EqualTo(proxied.ToString()));
            Assert.That(InvokeMethod(proxy, "GetType"), Is.EqualTo(proxied.GetType()));
            Assert.That(InvokeMethod(proxy, "GetHashCode"), Is.EqualTo(proxied.GetHashCode()));
            Assert.That(InvokeMethod(proxy, "Equals", proxied), Is.True);
            Assert.That(InvokeMethod(proxy, "Equals", proxy), Is.False);
        }
        public void AmbigousExplicitInterfaceProperties_Without_Proxy()
        {
            var proxied = new ProxiedChild("PC");

            ExecuteScriptAccessPropertyAmbigous(proxied);
        }