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); }