public void ProxyTargetVirtualMethodParameterAttributes() { MarkerClass target = new MarkerClass(); AdvisedSupport advised = new AdvisedSupport(new Type[] { typeof(IMarkerInterface) }); advised.Target = target; IAopProxy aopProxy = CreateAopProxy(advised); object proxy = aopProxy.GetProxy(); Assert.IsNotNull(proxy, "The proxy generated by a (valid) call to GetProxy() was null."); MethodInfo method = proxy.GetType().GetMethod("MarkerVirtualMethod"); Assert.IsNotNull(method); object[] attrs = method.GetParameters()[1].GetCustomAttributes(false); Assert.IsNotNull(attrs, "Should have had 1 attribute applied to the method's parameter."); Assert.AreEqual(1, attrs.Length, "Should have had 1 attribute applied to the method's parameter."); Assert.AreEqual(typeof(MarkerAttribute), attrs[0].GetType(), "Wrong System.Type of Attribute applied to the method's parameter."); }
public void DoesNotProxyTargetVirtualMethodReturnValueAttributesWithProxyTargetAttributesEqualsFalse() { MarkerClass target = new MarkerClass(); AdvisedSupport advised = new AdvisedSupport(new Type[] { typeof(IMarkerInterface) }); advised.Target = target; advised.ProxyTargetAttributes = false; IAopProxy aopProxy = CreateAopProxy(advised); object proxy = aopProxy.GetProxy(); Assert.IsNotNull(proxy, "The proxy generated by a (valid) call to GetProxy() was null."); MethodInfo method = proxy.GetType().GetMethod("MarkerVirtualMethod"); Assert.IsNotNull(method); object[] attrs = method.ReturnTypeCustomAttributes.GetCustomAttributes(false); Assert.IsNotNull(attrs); Assert.AreEqual(0, attrs.Length, "Should not have attribute applied to the method's return value."); }
public void ProxyCanBeClassAndInterface() { TestObject target = new TestObject(); target.Age = 32; mockTargetSource.SetTarget(target); AdvisedSupport advised = new AdvisedSupport(); advised.TargetSource = mockTargetSource; IAopProxy aop = CreateAopProxy(advised); object proxy = aop.GetProxy(); Assert.IsTrue(AopUtils.IsDecoratorAopProxy(proxy), "Should be a decorator-based proxy"); Assert.IsTrue(proxy is ITestObject); Assert.IsTrue(proxy is TestObject); ITestObject itb = (ITestObject)proxy; Assert.AreEqual(32, itb.Age, "Incorrect age"); TestObject tb = (TestObject)proxy; Assert.AreEqual(32, tb.Age, "Incorrect age"); }
/// <summary> /// Creates a new proxy according to the settings in this factory. /// </summary> /// <remarks> /// <p> /// Can be called repeatedly; the effect of repeated invocations will /// (of course) vary if interfaces have been added or removed. /// </p> /// </remarks> /// <returns>An AOP proxy for target object.</returns> public virtual object GetProxy() { IAopProxy proxy = CreateAopProxy(); return(proxy.GetProxy()); }