private object BuildUp(IResolverContext context) { var callSiteCollection = CallSiteCacheManager.GetCache(this).ToArray(); var i = callSiteCollection.Length - 1; for (; i >= 0; i--) { var callSite = callSiteCollection[i]; if (!callSite.Requires(context, this)) { continue; } callSite.Resolver(context, this); if (!context.Handled) { continue; } return(context.Resolved); } return(context.Resolved); }
private void InitializationCallSite() { CallSiteCacheManager.SetCache(this, new PropertyResolverCallSite(), new CompileResolverCallSite(), new ConstructorResolverCallSite(), new NewResolverCallSite(), new InstanceResolverCallSite(), new DelegateResolverCallSite(), new ScopedResolverCallSite(), new SingletonResolverCallSite(), new TransientResolverCallSite()); }
/// <summary> /// 移除所有解析器调用 /// </summary> /// <param name="dependencyResolver"></param> public static void RemoveAllCallSites(this IDependencyResolver dependencyResolver) { CallSiteCacheManager.Clear(); }
/// <summary> /// 添加解析器调用 /// </summary> public static void AddCallSite(this IDependencyResolver dependencyResolver, params IResolverCallSite[] callSites) { CallSiteCacheManager.SetCache(dependencyResolver, callSites); }
public void Dispose() { ScopedKeyCacheManager.RemoveCache(this); DependencyCacheManager.RemoveCache(this); CallSiteCacheManager.RemoveCache(this); }