Placing IServiceProvider on IBuilder

Replaces concept of features/items on builder instance for now
This commit is contained in:
Louis DeJardin 2014-02-08 16:03:59 -08:00
parent f9d29fd8aa
commit e2f45c59ea
2 changed files with 6 additions and 43 deletions

View File

@ -4,13 +4,12 @@ namespace Microsoft.AspNet.Abstractions
{ {
public interface IBuilder public interface IBuilder
{ {
IServiceProvider ServiceProvider { get; set; }
IBuilder Use(Func<RequestDelegate, RequestDelegate> middleware); IBuilder Use(Func<RequestDelegate, RequestDelegate> middleware);
IBuilder Run(RequestDelegate handler); IBuilder Run(RequestDelegate handler);
IBuilder New(); IBuilder New();
RequestDelegate Build(); RequestDelegate Build();
object GetItem(Type type);
void SetItem(Type type, object feature);
} }
} }

View File

@ -1,56 +1,20 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Abstractions; using Microsoft.AspNet.Abstractions;
using Microsoft.AspNet.FeatureModel;
namespace Microsoft.AspNet.PipelineCore namespace Microsoft.AspNet.PipelineCore
{ {
public class Builder : IBuilder public class Builder : IBuilder
{ {
private readonly IFeatureCollection _interfaces;
private readonly IDictionary<string, object> _properties;
private readonly IList<Func<RequestDelegate, RequestDelegate>> _components = new List<Func<RequestDelegate, RequestDelegate>>(); private readonly IList<Func<RequestDelegate, RequestDelegate>> _components = new List<Func<RequestDelegate, RequestDelegate>>();
public Builder() public Builder(IServiceProvider serviceProvider)
{ {
_interfaces = new FeatureCollection(); ServiceProvider = serviceProvider;
_properties = new Dictionary<string, object>();
} }
public Builder(IFeatureCollection interfaces, IDictionary<string, object> properties) public IServiceProvider ServiceProvider { get; set; }
{
_interfaces = interfaces;
_properties = properties;
}
public void Dispose()
{
_interfaces.Dispose();
}
public virtual object GetItem(Type key)
{
object value;
return _interfaces.TryGetValue(key, out value);
}
public virtual void SetItem(Type key, object value)
{
_interfaces[key] = value;
}
public virtual object GetItem(string key)
{
object value;
return _properties.TryGetValue(key, out value);
}
public virtual void SetItem(string key, object value)
{
_properties[key] = value;
}
public IBuilder Use(Func<RequestDelegate, RequestDelegate> middleware) public IBuilder Use(Func<RequestDelegate, RequestDelegate> middleware)
{ {
@ -65,7 +29,7 @@ namespace Microsoft.AspNet.PipelineCore
public IBuilder New() public IBuilder New()
{ {
return new Builder(_interfaces, _properties); return new Builder(ServiceProvider);
} }
public RequestDelegate Build() public RequestDelegate Build()