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);
        }
Beispiel #2
0
        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);
        }