From bc08bd7dc22d6605f3b4cbd1be9cf747ba4652b5 Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Thu, 31 Oct 2013 16:44:20 +1100 Subject: [PATCH] Fix #22: PluginWebViewPage ReferenceNullException Plugin Helper needs to be lazy loaded --- Disco.Services/Plugins/PluginWebViewPage.cs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Disco.Services/Plugins/PluginWebViewPage.cs b/Disco.Services/Plugins/PluginWebViewPage.cs index e024c070..57671dc7 100644 --- a/Disco.Services/Plugins/PluginWebViewPage.cs +++ b/Disco.Services/Plugins/PluginWebViewPage.cs @@ -8,14 +8,28 @@ namespace Disco.Services.Plugins { public abstract class PluginWebViewPage : Disco.Services.Web.WebViewPage { - public WebPageHelper Plugin { get; private set; } + private Lazy> _plugin; + + public PluginManifest Manifest {get;private set;} + public WebPageHelper Plugin + { + get + { + return _plugin.Value; + } + } public PluginWebViewPage() { var self = this.GetType(); - var manifest = Plugins.GetPlugin(self.Assembly); + this.Manifest = Plugins.GetPlugin(self.Assembly); - this.Plugin = new WebPageHelper(this, manifest); + this._plugin = new Lazy>(() => { + if (this.Context == null) + throw new InvalidOperationException("The WebViewPage Context property is not initialized"); + + return new WebPageHelper(this, this.Manifest); + }); } } }