protected override Expression VisitSingleton(SingletonCallSite singletonCallSite, CallSiteExpressionBuilderContext context) { if (TryResolveSingletonValue(singletonCallSite, out var value)) { return(Expression.Constant(value)); } return(Expression.Call( Expression.Constant(_runtimeResolver), CallSiteRuntimeResolverResolve, Expression.Constant(singletonCallSite, typeof(IServiceCallSite)), context.ScopeParameter)); }
protected override object VisitSingleton(SingletonCallSite singletonCallSite, ServiceProviderEngineScope scope) { return(VisitScoped(singletonCallSite, scope.Engine.Root)); }
protected abstract TResult VisitSingleton(SingletonCallSite singletonCallSite, TArgument argument);
protected override Type VisitSingleton(SingletonCallSite singletonCallSite, CallSiteValidatorState state) { state.Singleton = singletonCallSite; return(VisitCallSite(singletonCallSite.ServiceCallSite, state)); }
protected override ILEmitCallSiteAnalysisResult VisitSingleton(SingletonCallSite singletonCallSite, object argument) => VisitCallSite(singletonCallSite.ServiceCallSite, argument);