From ca2ef860f5cdfe3b4e6740a1f409638af8aa75cc Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Mon, 17 Mar 2014 21:42:35 -0700 Subject: [PATCH] Adding IServiceProvider interfaces to HttpContext --- .../HttpContext.cs | 4 ++++ .../DefaultCanHasServiceProviders.cs | 10 ++++++++++ .../DefaultHttpContext.cs | 19 +++++++++++++++++++ .../ICanHasServiceProviders.cs | 10 ++++++++++ 4 files changed, 43 insertions(+) create mode 100644 src/Microsoft.AspNet.PipelineCore/DefaultCanHasServiceProviders.cs create mode 100644 src/Microsoft.AspNet.PipelineCore/ICanHasServiceProviders.cs diff --git a/src/Microsoft.AspNet.Abstractions/HttpContext.cs b/src/Microsoft.AspNet.Abstractions/HttpContext.cs index 03d8c7ec2e..9f2eac3614 100644 --- a/src/Microsoft.AspNet.Abstractions/HttpContext.cs +++ b/src/Microsoft.AspNet.Abstractions/HttpContext.cs @@ -11,6 +11,10 @@ namespace Microsoft.AspNet.Abstractions public abstract IDictionary Items { get; } + public abstract IServiceProvider ApplicationServices { get; set; } + + public abstract IServiceProvider RequestServices { get; set; } + public abstract void Dispose(); public abstract object GetFeature(Type type); diff --git a/src/Microsoft.AspNet.PipelineCore/DefaultCanHasServiceProviders.cs b/src/Microsoft.AspNet.PipelineCore/DefaultCanHasServiceProviders.cs new file mode 100644 index 0000000000..58ccd6565d --- /dev/null +++ b/src/Microsoft.AspNet.PipelineCore/DefaultCanHasServiceProviders.cs @@ -0,0 +1,10 @@ +using System; + +namespace Microsoft.AspNet.PipelineCore +{ + public class DefaultCanHasServiceProviders : ICanHasServiceProviders + { + public IServiceProvider ApplicationServices { get; set; } + public IServiceProvider RequestServices { get; set; } + } +} \ No newline at end of file diff --git a/src/Microsoft.AspNet.PipelineCore/DefaultHttpContext.cs b/src/Microsoft.AspNet.PipelineCore/DefaultHttpContext.cs index 778611eee0..da5e692686 100644 --- a/src/Microsoft.AspNet.PipelineCore/DefaultHttpContext.cs +++ b/src/Microsoft.AspNet.PipelineCore/DefaultHttpContext.cs @@ -12,6 +12,7 @@ namespace Microsoft.AspNet.PipelineCore private readonly HttpResponse _response; private FeatureReference _canHasItems; + private FeatureReference _canHasServiceProviders; private IFeatureCollection _features; public DefaultHttpContext(IFeatureCollection features) @@ -21,6 +22,7 @@ namespace Microsoft.AspNet.PipelineCore _response = new DefaultHttpResponse(this, features); _canHasItems = FeatureReference.Default; + _canHasServiceProviders = FeatureReference.Default; } ICanHasItems CanHasItems @@ -28,6 +30,11 @@ namespace Microsoft.AspNet.PipelineCore get { return _canHasItems.Fetch(_features) ?? _canHasItems.Update(_features, new DefaultCanHasItems()); } } + ICanHasServiceProviders CanHasServiceProviders + { + get { return _canHasServiceProviders.Fetch(_features) ?? _canHasServiceProviders.Update(_features, new DefaultCanHasServiceProviders()); } + } + public override HttpRequest Request { get { return _request; } } public override HttpResponse Response { get { return _response; } } @@ -37,6 +44,18 @@ namespace Microsoft.AspNet.PipelineCore get { return CanHasItems.Items; } } + public override IServiceProvider ApplicationServices + { + get { return CanHasServiceProviders.ApplicationServices; } + set { CanHasServiceProviders.ApplicationServices = value; } + } + + public override IServiceProvider RequestServices + { + get { return CanHasServiceProviders.RequestServices; } + set { CanHasServiceProviders.RequestServices = value; } + } + public int Revision { get { return _features.Revision; } } public override void Dispose() diff --git a/src/Microsoft.AspNet.PipelineCore/ICanHasServiceProviders.cs b/src/Microsoft.AspNet.PipelineCore/ICanHasServiceProviders.cs new file mode 100644 index 0000000000..77befcf990 --- /dev/null +++ b/src/Microsoft.AspNet.PipelineCore/ICanHasServiceProviders.cs @@ -0,0 +1,10 @@ +using System; + +namespace Microsoft.AspNet.PipelineCore +{ + public interface ICanHasServiceProviders + { + IServiceProvider ApplicationServices { get; set; } + IServiceProvider RequestServices { get; set; } + } +} \ No newline at end of file