public void get_ServiceProvider_Test() { var generator = new ProxyGenerator(new AspectValidator(new AspectConfigure())); var proxyType = generator.CreateInterfaceProxyType(typeof(ITargetService), typeof(TargetService)); var serviceProvider = new InstanceServiceProvider(null); var proxyInstance = Activator.CreateInstance(proxyType, serviceProvider, new InstanceServiceProvider(new TargetService())); var serviceProviderAccessor = proxyInstance as IServiceProviderAccessor; Assert.NotNull(serviceProviderAccessor); Assert.Equal(serviceProviderAccessor.ServiceProvider, serviceProvider); }
public void InvokeA_Test() { var Configure = new AspectConfigure(); var serviceProvider = new InstanceServiceProvider(null); var activator = new AspectActivator(serviceProvider, new AspectBuilderProvider(new InterceptorSelector(new InterceptorMatcher(Configure), new InterceptorInjectorProvider(serviceProvider, new PropertyInjectorSelector())))); var input = 0; var activatorContext = Substitute.For <AspectActivatorContext>(); activatorContext.Parameters.Returns(new object[] { input }); activatorContext.ServiceType.Returns(typeof(ITargetService)); activatorContext.ServiceMethod.Returns(ReflectionExtensions.GetMethod <Func <ITargetService, int, int> >((m, v) => m.Add(v))); activatorContext.TargetMethod.Returns(ReflectionExtensions.GetMethod <Func <TargetService, int, int> >((m, v) => m.Add(v))); activatorContext.ProxyMethod.Returns(ReflectionExtensions.GetMethod <Func <ProxyService, int, int> >((m, v) => m.Add(v))); activatorContext.TargetInstance.Returns(new TargetService()); activatorContext.ProxyInstance.Returns(new ProxyService()); var result = activator.Invoke <int>(activatorContext); Assert.Equal(result, input + 1); }