01-007 HttpAbstractions 之 FeatureReference<T>
Posted on 2015-03-06 11:30 DotNet1010 阅读(162) 评论(0) 收藏 举报---主要代码如下:用来获取新的实现类型,并更新版本,初始值为null 版本为-1;
public T Fetch(IFeatureCollection features)
{
if (_revision == features.Revision) return _feature;
object value;
if (features.TryGetValue(typeof(T), out value))
{
_feature = (T)value;
}
else
{
_feature = default(T);
}
_revision = features.Revision;
return _feature;
}
public T Update(IFeatureCollection features, T feature)
{
features[typeof(T)] = _feature = feature;
_revision = features.Revision;
return feature;
}
}
DefaultHttpContext 有此方法
public override void SetFeature(Type type, object instance)
{
_features[type] = instance;
}
当调用SetFeature方法的时候 version 会增加1 导致Fetch 获取到新的对象。
上述代码说明Feature都是可以后面自己实现来替换的这些feature有:
//HttpContext 中的
private FeatureReference<IItemsFeature> _items;
private FeatureReference<IServiceProvidersFeature> _serviceProviders;
private FeatureReference<IHttpAuthenticationFeature> _authentication;
private FeatureReference<IHttpRequestLifetimeFeature> _lifetime;
private FeatureReference<IHttpWebSocketFeature> _webSockets;
private FeatureReference<ISessionFeature> _session;
//HttpRequest中的
private FeatureReference<IHttpRequestFeature> _request = FeatureReference<IHttpRequestFeature>.Default;
private FeatureReference<IHttpConnectionFeature> _connection = FeatureReference<IHttpConnectionFeature>.Default;
private FeatureReference<IHttpClientCertificateFeature> _clientCertificate = FeatureReference<IHttpClientCertificateFeature>.Default;
private FeatureReference<IQueryFeature> _query = FeatureReference<IQueryFeature>.Default;
private FeatureReference<IFormFeature> _form = FeatureReference<IFormFeature>.Default;
private FeatureReference<IRequestCookiesFeature> _cookies = FeatureReference<IRequestCookiesFeature>.Default;
//--HttpResponse 中的
private FeatureReference<IHttpResponseFeature> _response = FeatureReference<IHttpResponseFeature>.Default;
private FeatureReference<IResponseCookiesFeature> _cookies = FeatureReference<IResponseCookiesFeature>.Default;
private FeatureReference<IHttpAuthenticationFeature> _authentication = FeatureReference<IHttpAuthenticationFeature>.Default;
浙公网安备 33010602011771号