public ExpressionResolverBuilder(CallSiteRuntimeResolver runtimeResolver, IServiceScopeFactory serviceScopeFactory, ServiceProviderEngineScope rootScope) : base() { _runtimeResolver = runtimeResolver ?? throw new ArgumentNullException(nameof(runtimeResolver)); _serviceScopeFactory = serviceScopeFactory; _rootScope = rootScope; }
public CallSiteExpressionBuilder(CallSiteRuntimeResolver runtimeResolver) { if (runtimeResolver == null) { throw new ArgumentNullException(nameof(runtimeResolver)); } _runtimeResolver = runtimeResolver; }
public ILEmitResolverBuilder(CallSiteRuntimeResolver runtimeResolver, IServiceScopeFactory serviceScopeFactory, ServiceProviderEngineScope rootScope) { if (runtimeResolver == null) { throw new ArgumentNullException(nameof(runtimeResolver)); } _runtimeResolver = runtimeResolver; _serviceScopeFactory = serviceScopeFactory; _rootScope = rootScope; }
protected ServiceProviderEngine(IEnumerable <ServiceDescriptor> serviceDescriptors) { _createServiceAccessor = CreateServiceAccessor; Root = new ServiceProviderEngineScope(this, isRoot: true); RuntimeResolver = new CallSiteRuntimeResolver(); CallSiteFactory = new CallSiteFactory(serviceDescriptors); CallSiteFactory.Add(typeof(IServiceProvider), new ServiceProviderCallSite()); CallSiteFactory.Add(typeof(IServiceScopeFactory), new ServiceScopeFactoryCallSite()); RealizedServices = new ConcurrentDictionary <Type, Func <ServiceProviderEngineScope, object> >(); }
protected ServiceProviderEngine(IEnumerable <ServiceDescriptor> serviceDescriptors, IServiceProviderEngineCallback callback) { _createServiceAccessor = CreateServiceAccessor; _callback = callback; Root = new ServiceProviderEngineScope(this); //实例化根容器 RuntimeResolver = new CallSiteRuntimeResolver(); //实例化 CallSite对象访问者对象 CallSiteFactory = new CallSiteFactory(serviceDescriptors); CallSiteFactory.Add(typeof(IServiceProvider), new ServiceProviderCallSite()); CallSiteFactory.Add(typeof(IServiceScopeFactory), new ServiceScopeFactoryCallSite()); // 缓存一个ServiceScopeFactoryCallSite服务,相当于缓存一个ServiceProviderEngine,根据此对象进行创建子容器 RealizedServices = new ConcurrentDictionary <Type, Func <ServiceProviderEngineScope, object> >(); //缓存实例化对象的工厂 }
protected ServiceProviderEngine(IEnumerable <ServiceDescriptor> serviceDescriptors, IServiceProviderEngineCallback callback) { _createServiceAccessor = CreateServiceAccessor; _callback = callback; Root = new ServiceProviderEngineScope(this); RuntimeResolver = new CallSiteRuntimeResolver(); ExpressionBuilder = new CallSiteExpressionBuilder(RuntimeResolver, this, Root); CallSiteFactory = new CallSiteFactory(serviceDescriptors); CallSiteFactory.Add(typeof(IServiceProvider), new ServiceProviderCallSite()); CallSiteFactory.Add(typeof(IServiceScopeFactory), new ServiceScopeFactoryCallSite()); }
public ILEmitResolverBuilder(CallSiteRuntimeResolver runtimeResolver, IServiceScopeFactory serviceScopeFactory, ServiceProviderEngineScope rootScope) : base() { if (runtimeResolver == null) { throw new ArgumentNullException(nameof(runtimeResolver)); } _runtimeResolver = runtimeResolver; _serviceScopeFactory = serviceScopeFactory; _rootScope = rootScope; _scopeResolverCache = new ConcurrentDictionary <ServiceCacheKey, GeneratedMethod>(); _buildTypeDelegate = (key, cs) => BuildTypeNoCache(cs); }
public ExpressionResolverBuilder(CallSiteRuntimeResolver runtimeResolver, IServiceScopeFactory serviceScopeFactory, ServiceProviderEngineScope rootScope) { if (runtimeResolver == null) { throw new ArgumentNullException(nameof(runtimeResolver)); } _scopeResolverCache = new ConcurrentDictionary <ServiceCacheKey, Func <ServiceProviderEngineScope, object> >(); _runtimeResolver = runtimeResolver; _serviceScopeFactory = serviceScopeFactory; _rootScope = rootScope; _buildTypeDelegate = (key, cs) => BuildNoCache(cs); }
protected ServiceProviderEngine( IEnumerable <ServiceDescriptor> serviceDescriptors, IServiceProviderEngineCallback callback, IInterceptingProxyFactory interceptingProxyFactory) { _createServiceAccessor = CreateServiceAccessor; _callback = callback; Root = new ServiceProviderEngineScope(this); RuntimeResolver = new CallSiteRuntimeResolver(); CallSiteFactory = new CallSiteFactory(serviceDescriptors, interceptingProxyFactory); CallSiteFactory.Add(typeof(IServiceProvider), new ServiceProviderCallSite()); CallSiteFactory.Add(typeof(IServiceScopeFactory), new ServiceScopeFactoryCallSite()); RealizedServices = new ConcurrentDictionary <Type, Func <ServiceProviderEngineScope, object> >(); }