public void ExplicitInterfaceMethods_AreIgnored_OnClassProxy() { LogInvocationInterceptor interceptor = new LogInvocationInterceptor(); ClassWithExplicitInterface instance = generator.CreateClassProxy <ClassWithExplicitInterface>(interceptor); instance.DoVirtual(); int result = ((ISimpleInterface)instance).Do(); instance.DoVirtual(); Assert.AreEqual(2, interceptor.Invocations.Count); Assert.AreEqual("DoVirtual", interceptor.Invocations[0]); Assert.AreEqual("DoVirtual", interceptor.Invocations[1]); Assert.AreEqual(5, result); }
public void ExplicitInterface_AsAdditionalInterfaceToProxy_OnClassProxy_WithoutBaseCalls() { LogInvocationInterceptor interceptor = new LogInvocationInterceptor(); interceptor.Proceed = false; ClassWithExplicitInterface instance = (ClassWithExplicitInterface)generator.CreateClassProxy(typeof(ClassWithExplicitInterface), new[] { typeof(ISimpleInterface) }, interceptor); instance.DoVirtual(); int result = ((ISimpleInterface)instance).Do(); instance.DoVirtual(); Assert.AreEqual(3, interceptor.Invocations.Count); Assert.AreEqual("DoVirtual", interceptor.Invocations[0]); Assert.AreEqual("Do", interceptor.Invocations[1]); Assert.AreEqual("DoVirtual", interceptor.Invocations[2]); Assert.AreEqual(0, result); // indicates that original method was not called }