From a8c414050e04e95b6ecc967277c891ee23e03b4f Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Mon, 13 Sep 2010 17:58:26 -0700 Subject: [PATCH] Moving the IDisposable class as an implementation detail of the Capture method --HG-- branch : theming --- .../Mvc/ViewEngines/Razor/WebViewPage.cs | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs b/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs index 6b7f2fe55..5128af454 100644 --- a/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs +++ b/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs @@ -1,6 +1,7 @@ using System; using System.Web; using Autofac; +using Microsoft.WebPages; using Orchard.DisplayManagement; using Orchard.Localization; using Orchard.Mvc.Spooling; @@ -51,26 +52,27 @@ namespace Orchard.Mvc.ViewEngines.Razor { } public IDisposable Capture(Action callback) { - return new ViewContextSubstitution(this, callback); + return new CaptureScope(this, callback); + } + + class CaptureScope : IDisposable { + readonly WebPageBase _viewPage; + readonly Action _callback; + + public CaptureScope(WebPageBase viewPage, Action callback) { + _viewPage = viewPage; + _callback = callback; + _viewPage.OutputStack.Push(new HtmlStringWriter()); + } + + void IDisposable.Dispose() { + var writer = (HtmlStringWriter)_viewPage.OutputStack.Pop(); + _callback(writer); + } } } public abstract class WebViewPage : WebViewPage { } - public class ViewContextSubstitution : IDisposable { - public dynamic _viewPage; - private readonly Action _callback; - - public ViewContextSubstitution(dynamic viewPage, Action callback) { - _viewPage = viewPage; - _callback = callback; - _viewPage.OutputStack.Push(new HtmlStringWriter()); - } - - public void Dispose() { - var script = _viewPage.OutputStack.Pop().ToString(); - _callback(new HtmlString(script)); - } - } }