Adding IServiceProvider interfaces to HttpContext

This commit is contained in:
Louis DeJardin 2014-03-17 21:42:35 -07:00
parent 543e818acd
commit ca2ef860f5
4 changed files with 43 additions and 0 deletions

View File

@ -11,6 +11,10 @@ namespace Microsoft.AspNet.Abstractions
public abstract IDictionary<object, object> Items { get; }
public abstract IServiceProvider ApplicationServices { get; set; }
public abstract IServiceProvider RequestServices { get; set; }
public abstract void Dispose();
public abstract object GetFeature(Type type);

View File

@ -0,0 +1,10 @@
using System;
namespace Microsoft.AspNet.PipelineCore
{
public class DefaultCanHasServiceProviders : ICanHasServiceProviders
{
public IServiceProvider ApplicationServices { get; set; }
public IServiceProvider RequestServices { get; set; }
}
}

View File

@ -12,6 +12,7 @@ namespace Microsoft.AspNet.PipelineCore
private readonly HttpResponse _response;
private FeatureReference<ICanHasItems> _canHasItems;
private FeatureReference<ICanHasServiceProviders> _canHasServiceProviders;
private IFeatureCollection _features;
public DefaultHttpContext(IFeatureCollection features)
@ -21,6 +22,7 @@ namespace Microsoft.AspNet.PipelineCore
_response = new DefaultHttpResponse(this, features);
_canHasItems = FeatureReference<ICanHasItems>.Default;
_canHasServiceProviders = FeatureReference<ICanHasServiceProviders>.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()

View File

@ -0,0 +1,10 @@
using System;
namespace Microsoft.AspNet.PipelineCore
{
public interface ICanHasServiceProviders
{
IServiceProvider ApplicationServices { get; set; }
IServiceProvider RequestServices { get; set; }
}
}