/// <summary>
        /// Initial the container with this extension's functionality.
        /// </summary>
        /// <param name="container">The container this extension to extend.</param>
        public void Initialize(IServiceContainer container)
        {
            container.Registering += OnRegistering;
            var interceptor = new ServiceInterceptor(container);

            ((WindsorServiceContainer)container).RegisterInstance(typeof(ServiceInterceptor), interceptor);
            container.UseDefaultInterceptorFactory();
            interceptor.PipelineManager = new PipelineManager(container.GetInstance <IInterceptorFactory>());
        }
예제 #2
0
        public void DisposesLifetimeScopeWhenTriggerMethodInvoked(string methodName)
        {
            var lifetimeScope = new Mock <ILifetimeScope>(MockBehavior.Strict);

            lifetimeScope.Setup(x => x.Dispose()).Verifiable();

            var invocation = new Mock <IInvocation>(MockBehavior.Strict);

            invocation.Setup(x => x.Proceed()).Verifiable();
            invocation.Setup(x => x.Method.Name).Returns(methodName).Verifiable();

            var interceptor = new ServiceInterceptor(lifetimeScope.Object);

            interceptor.Intercept(invocation.Object);

            lifetimeScope.Verify();
            invocation.Verify();
        }
예제 #3
0
        public async Task RenderViewAsync <TModel>(string viewName, string outputName, TModel model)
        {
            var localizationOptions = _serviceProvider.GetService <IOptions <RequestLocalizationOptions> >()?.Value;
            var interceptor         = new ServiceInterceptor(_serviceProvider);
            var renderer            = new RazorViewRenderer
                                      (
                _viewEngine,
                _tempDataProvider,
                interceptor,
                _modelMetadataProvider
                                      );

            renderer.PrepareView(viewName);
            if (localizationOptions != null &&
                localizationOptions.DefaultRequestCulture != null &&
                localizationOptions.DefaultRequestCulture.UICulture != null)
            {
                await ExecuteWithCulture(
                    async() => { await renderer.RenderViewToFileAsync(outputName, model); },
                    localizationOptions.DefaultRequestCulture.UICulture);
            }
            else
            {
                await renderer.RenderViewToFileAsync(outputName, model);
            }
            if (interceptor.UseLocalization &&
                localizationOptions != null &&
                localizationOptions.SupportedUICultures != null &&
                localizationOptions.SupportedUICultures.Count > 0)
            {
                foreach (var culture in localizationOptions.SupportedUICultures)
                {
                    if (culture != localizationOptions?.DefaultRequestCulture?.UICulture)
                    {
                        await ExecuteWithCulture(
                            async() => { await renderer.RenderViewToFileAsync(
                                             addCultureToFileName(outputName, culture),
                                             model); },
                            culture);
                    }
                }
            }
        }