本文整理汇总了C#中Castle.DynamicProxy.Tests.Interceptors.KeepDataInterceptor类的典型用法代码示例。如果您正苦于以下问题:C# KeepDataInterceptor类的具体用法?C# KeepDataInterceptor怎么用?C# KeepDataInterceptor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
KeepDataInterceptor类属于Castle.DynamicProxy.Tests.Interceptors命名空间,在下文中一共展示了KeepDataInterceptor类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InterfaceProxyWithTarget_MethodInvocationTarget_should_be_null
public void InterfaceProxyWithTarget_MethodInvocationTarget_should_be_null()
{
var interceptor = new KeepDataInterceptor();
var proxy = generator.CreateInterfaceProxyWithoutTarget<IService>(interceptor);
proxy.Sum(2, 2);
Assert.IsNull(interceptor.Invocation.MethodInvocationTarget);
}
示例2: InvocationForInterfaceProxyWithTarget
public void InvocationForInterfaceProxyWithTarget()
{
KeepDataInterceptor interceptor = new KeepDataInterceptor();
object proxy = generator.CreateInterfaceProxyWithTarget(
typeof (IService), new ServiceImpl(), interceptor);
IService instance = (IService) proxy;
instance.Sum(20, 25);
Assert.IsNotNull(interceptor.Invocation);
Assert.IsNotNull(interceptor.Invocation.Arguments);
Assert.AreEqual(2, interceptor.Invocation.Arguments.Length);
Assert.AreEqual(20, interceptor.Invocation.Arguments[0]);
Assert.AreEqual(25, interceptor.Invocation.Arguments[1]);
Assert.AreEqual(20, interceptor.Invocation.GetArgumentValue(0));
Assert.AreEqual(25, interceptor.Invocation.GetArgumentValue(1));
Assert.AreEqual(45, interceptor.Invocation.ReturnValue);
Assert.IsNotNull(interceptor.Invocation.Proxy);
Assert.IsNotInstanceOf(typeof(ServiceImpl), interceptor.Invocation.Proxy);
Assert.IsNotNull(interceptor.Invocation.InvocationTarget);
Assert.IsInstanceOf(typeof(ServiceImpl), interceptor.Invocation.InvocationTarget);
Assert.IsNotNull(interceptor.Invocation.TargetType);
Assert.AreSame(typeof(ServiceImpl), interceptor.Invocation.TargetType);
Assert.IsNotNull(interceptor.Invocation.Method);
Assert.IsNotNull(interceptor.Invocation.MethodInvocationTarget);
Assert.AreNotSame(interceptor.Invocation.Method, interceptor.Invocation.MethodInvocationTarget);
}
示例3: InvocationForConcreteClassProxy
public void InvocationForConcreteClassProxy()
{
KeepDataInterceptor interceptor = new KeepDataInterceptor();
object proxy = generator.CreateClassProxy(typeof (ServiceClass), interceptor);
ServiceClass instance = (ServiceClass) proxy;
instance.Sum(20, 25);
Assert.IsNotNull(interceptor.Invocation);
Assert.IsNotNull(interceptor.Invocation.Arguments);
Assert.AreEqual(2, interceptor.Invocation.Arguments.Length);
Assert.AreEqual(20, interceptor.Invocation.Arguments[0]);
Assert.AreEqual(25, interceptor.Invocation.Arguments[1]);
Assert.AreEqual(20, interceptor.Invocation.GetArgumentValue(0));
Assert.AreEqual(25, interceptor.Invocation.GetArgumentValue(1));
Assert.AreEqual(45, interceptor.Invocation.ReturnValue);
Assert.IsNotNull(interceptor.Invocation.Proxy);
Assert.IsInstanceOf(typeof (ServiceClass), interceptor.Invocation.Proxy);
Assert.IsNotNull(interceptor.Invocation.InvocationTarget);
Assert.IsInstanceOf(typeof (ServiceClass), interceptor.Invocation.InvocationTarget);
Assert.IsNotNull(interceptor.Invocation.TargetType);
Assert.AreSame(typeof (ServiceClass), interceptor.Invocation.TargetType);
Assert.IsNotNull(interceptor.Invocation.Method);
Assert.IsNotNull(interceptor.Invocation.MethodInvocationTarget);
Assert.AreSame(interceptor.Invocation.Method, interceptor.Invocation.MethodInvocationTarget.GetBaseDefinition());
}
示例4: ClassProxy_MethodInvocationTarget_should_be_base_Method_for_interface_methods_implemented_virtually
public void ClassProxy_MethodInvocationTarget_should_be_base_Method_for_interface_methods_implemented_virtually()
{
var interceptor = new KeepDataInterceptor();
var proxy = generator.CreateClassProxy(typeof(ClassWithVirtualInterface), new[] { typeof(ISimpleInterface) }, interceptor) as ISimpleInterface;
proxy.Do();
var methodOnClass = typeof(ClassWithVirtualInterface).GetMethod("Do", Type.EmptyTypes);
Assert.AreSame(methodOnClass, interceptor.Invocation.MethodInvocationTarget);
}
示例5: KeepDataInterceptor
public void ClassProxy_MethodInvocationTarget_should_be_base_Method_for_interface_methods_implemented_non_virtually()
{
var interceptor = new KeepDataInterceptor();
var proxy = generator.CreateClassProxy(typeof(One), new[] { typeof(IOne) }, interceptor) as IOne;
proxy.OneMethod();
var methodOnInterface = typeof(One).GetMethod("OneMethod", Type.EmptyTypes);
Assert.AreSame(methodOnInterface, interceptor.Invocation.MethodInvocationTarget);
}
示例6: ClassProxy_MethodInvocationTarget_should_be_base_Method
public void ClassProxy_MethodInvocationTarget_should_be_base_Method()
{
var interceptor = new KeepDataInterceptor();
var proxy = generator.CreateClassProxy<ServiceClass>(interceptor);
proxy.Sum(2, 2);
var methodOnClass = typeof(ServiceClass).GetMethod("Sum", new[] { typeof(int), typeof(int) });
Assert.AreSame(methodOnClass, interceptor.Invocation.MethodInvocationTarget);
}
示例7: InterfaceProxyWithTargetInterface_MethodInvocationTarget_should_be_methodOnTargetType
public void InterfaceProxyWithTargetInterface_MethodInvocationTarget_should_be_methodOnTargetType()
{
var interceptor = new KeepDataInterceptor();
var target = new ServiceImpl();
var proxy = generator.CreateInterfaceProxyWithTargetInterface(typeof(IService), target, interceptor) as IService;
proxy.Sum(2, 2);
MethodInfo methodOnTarget = target.GetType().GetMethod("Sum", new[] { typeof(int), typeof(int) });
Assert.AreSame(methodOnTarget, interceptor.Invocation.MethodInvocationTarget);
}
示例8: Should_share_invocations_for_interface_methods
public void Should_share_invocations_for_interface_methods()
{
var interceptor1 = new KeepDataInterceptor();
var interceptor2 = new KeepDataInterceptor();
var first = generator.CreateInterfaceProxyWithTarget<IOne>(new One(), interceptor1);
var second = generator.CreateInterfaceProxyWithTarget<IOne>(new OneTwo(), interceptor2);
Assert.AreNotEqual(first.GetType(), second.GetType(), "proxy types are different");
first.OneMethod();
second.OneMethod();
Assert.AreEqual(interceptor1.Invocation.GetType(), interceptor2.Invocation.GetType());
}
示例9: GenericMethod_WithConstraintOnSurroundingTypeParameter
public void GenericMethod_WithConstraintOnSurroundingTypeParameter ()
{
Type type = typeof (IGenericInterfaceWithGenericMethodWithDependentConstraint<object>);
KeepDataInterceptor interceptor = new KeepDataInterceptor ();
IGenericInterfaceWithGenericMethodWithDependentConstraint<object> proxy = (IGenericInterfaceWithGenericMethodWithDependentConstraint<object>)
generator.CreateInterfaceProxyWithoutTarget(type, new Type[] { }, interceptor);
proxy.RegisterType<string> ();
MethodInfo expectedMethod =
typeof (IGenericInterfaceWithGenericMethodWithDependentConstraint<object>).GetMethod ("RegisterType").MakeGenericMethod (typeof (string));
Assert.AreEqual (expectedMethod, interceptor.Invocation.Method);
}
示例10: Should_not_share_invocations_for_interface_methods_when_one_is_IChangeProxyTarget
public void Should_not_share_invocations_for_interface_methods_when_one_is_IChangeProxyTarget()
{
var interceptor1 = new KeepDataInterceptor();
var interceptor2 = new KeepDataInterceptor();
var first = generator.CreateInterfaceProxyWithTarget<IOne>(new One(), interceptor1);
var second = generator.CreateInterfaceProxyWithTargetInterface<IOne>(new OneTwo(), interceptor2);
Assert.AreNotEqual(first.GetType(), second.GetType(), "proxy types are different");
first.OneMethod();
second.OneMethod();
Assert.IsNotInstanceOf<IChangeProxyTarget>(interceptor1.Invocation);
Assert.IsInstanceOf<IChangeProxyTarget>(interceptor2.Invocation);
Assert.AreNotEqual(interceptor1.Invocation.GetType(), interceptor2.Invocation.GetType());
}
示例11: GenericMethod_WithConstraintOnOtherParameter
public void GenericMethod_WithConstraintOnOtherParameter()
{
var type = typeof(IInterfaceWithGenericMethodWithDependentConstraint);
var interceptor = new KeepDataInterceptor();
var proxy = (IInterfaceWithGenericMethodWithDependentConstraint)
generator.CreateInterfaceProxyWithoutTarget(type, new Type[] { }, interceptor);
proxy.RegisterType<object, string>();
var expectedMethod =
typeof(IInterfaceWithGenericMethodWithDependentConstraint).GetMethod("RegisterType").MakeGenericMethod(
typeof(object), typeof(string));
Assert.AreEqual(expectedMethod, interceptor.Invocation.Method);
}
示例12: MethodInfoClosedInGenTypeNongenMethodValueTypeRefType
public void MethodInfoClosedInGenTypeNongenMethodValueTypeRefType()
{
KeepDataInterceptor interceptor = new KeepDataInterceptor();
GenClassWithGenReturn<int, List<object>> proxy =
generator.CreateClassProxy<GenClassWithGenReturn<int, List<object>>>(interceptor);
proxy.DoSomethingT();
GenericTestUtility.CheckMethodInfoIsClosed(interceptor.Invocation.GetConcreteMethod(), typeof (int));
Assert.AreEqual(interceptor.Invocation.GetConcreteMethod(),
interceptor.Invocation.GetConcreteMethodInvocationTarget().GetBaseDefinition());
proxy.DoSomethingZ();
GenericTestUtility.CheckMethodInfoIsClosed(interceptor.Invocation.GetConcreteMethod(), typeof (List<object>));
Assert.AreEqual(interceptor.Invocation.GetConcreteMethod(),
interceptor.Invocation.GetConcreteMethodInvocationTarget().GetBaseDefinition());
}
示例13: ThrowsWhenProxyingGenericTypeDefNoTarget
public void ThrowsWhenProxyingGenericTypeDefNoTarget()
{
var interceptor = new KeepDataInterceptor();
Assert.Throws<GeneratorException>(() =>
generator.CreateInterfaceProxyWithoutTarget(typeof(IGenInterfaceHierarchyBase<>), interceptor)
);
}
示例14: ThrowsWhenProxyingGenericTypeDefNoTarget
public void ThrowsWhenProxyingGenericTypeDefNoTarget()
{
KeepDataInterceptor interceptor = new KeepDataInterceptor();
Assert.Throws<GeneratorException>(delegate {
generator.CreateClassProxy(typeof(GenClassWithGenReturn<,>), interceptor);
});
}
示例15: MethodInfoClosedInGenTypeGenMethodValueType
public void MethodInfoClosedInGenTypeGenMethodValueType()
{
KeepDataInterceptor interceptor = new KeepDataInterceptor();
GenClassWithGenMethods<int> proxy = generator.CreateClassProxy<GenClassWithGenMethods<int>>(interceptor);
proxy.DoSomething(1);
GenericTestUtility.CheckMethodInfoIsClosed(interceptor.Invocation.GetConcreteMethod(), typeof (int), typeof (int));
Assert.AreEqual(interceptor.Invocation.GetConcreteMethod(),
interceptor.Invocation.GetConcreteMethodInvocationTarget());
proxy.DoSomething(new List<object>());
GenericTestUtility.CheckMethodInfoIsClosed(interceptor.Invocation.GetConcreteMethod(), typeof (int),
typeof (List<object>));
Assert.AreEqual(interceptor.Invocation.GetConcreteMethod(),
interceptor.Invocation.GetConcreteMethodInvocationTarget());
}