public void Resolver(IResolverContext context, IDependencyResolver resolver) { var properties = PropertyCacheManager.GetOrSetCache(context.Dependency, () => context.Resolved.GetType(). GetProperties(BindingFlags.Public | BindingFlags.Instance). Where(property => DependencyCacheManager.GetCache((IScopedResolver) resolver). Any(dependency => property.PropertyType == dependency.ServiceType) && !property.IsDefined(typeof (IgnoreDependencyAttribute), false))); foreach (var property in properties) { try { PropertySetCacheManger.Cache(property, context.Resolved, resolver.Resolve(property.PropertyType)); } catch (Exception ex) { throw new InvalidOperationException( $"类型\"{context.Dependency.GetImplementationType()}\"未能注入属性\"{property.PropertyType}\"的实例。", ex); } } context.Handled = true; }
private Object[] GetParameters(IResolverContext context, IDependencyTable dependencyTable, IDependencyResolver resolver) { return context.HasImplementationDelegate() ? new Object[0] : context.DependencyEntry.GetImplementationType(). GetConstructorParameters(_dependencyTable, resolver); }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var body = Expression.New(context.DependencyEntry.ImplementationType); var factory = Expression.Lambda<Func<IDependencyResolver, Object[], Object>>(body, Expression.Parameter(typeof(IDependencyResolver)), Expression.Parameter(typeof(Object[]))); context.CompleteValue = factory; }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { Expression<Func<IDependencyResolver, Object[], Object>> factory = (_r, _args) => context.DependencyEntry.ImplementationInstance; context.CompleteValue = factory; }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { Expression<Func<IDependencyResolver, object[], object>> factory = (r, args) => context.Dependency.ImplementationDelegate(r); context.Resolved = factory; }
private ConstructorInfo FindConstructor(IResolverContext context) { ///返回实现类型参数最多的构造器 return context.DependencyEntry.GetImplementationType(). ///获取服务的实现类型 GetConstructors(). OrderByDescending( ctor => ctor.GetParameters().Length). First(); }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var implType = context.DependencyEntry.ImplementationType; var constructor = implType.GetBastConstructor(_dependencyTable); if (constructor == null) throw new InvalidOperationException(implType.FullName + "不存在公共构造方法。"); context.CompleteValue = Expression.New(constructor, GetConstructorParameters(constructor, resolver)); }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { context.Resolved = Expression.Lambda<Func<IDependencyResolver, object[], object>>( Expression.New(context.IsDynamicProxy() ? DynamicTypeCacheManager.GetCache(context.Dependency.ImplementationType) : context.Dependency.ImplementationType), Expression.Parameter(typeof (IDependencyResolver)), Expression.Parameter(typeof (object[]))); }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var parameter = Expression.Parameter(typeof(IDependencyResolver), "resolver"); var factory = Expression.Invoke( Expression.Constant(context.DependencyEntry.ImplementationDelegate, typeof(Func<IDependencyResolver, Object>)), parameter); context.CompleteValue = factory; }
/// <summary> /// 解析类型 /// </summary> public void Resolver(IResolverContext context, IDependencyResolver resolver) { ConstructorInfo constructor = FindConstructor(context); Object[] args = GetParameterValues(constructor, resolver); ///设置解析结果 context.CompleteValue = constructor.Invoke(args); ///解析完成 context.Complete = true; }
private void CacheComplete(IResolverContext context, IDependencyResolver resolver) { if (context.IsSingletonLifetime()) { DependencyTableHelper.AddScoped(_dependencyTable, context, null); } if (context.IsScopedLifetime()) { DependencyTableHelper.AddScoped(_dependencyTable, context, resolver); } }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var args = context.HasImplementationType() && context.HasPublicConstructor() ? ResolverHelper.GetConstructorParameters( context.Dependency.GetImplementationType(), resolver) : ArrayExtends.Empty<object>(); context.Resolved = CompileCacheManager.GetCache(context.Dependency, resolver, args); context.Handled = context.Resolved != null && !PropertyCacheManager.Any(context.Dependency); }
private void CacheResolved(IResolverContext context, IDependencyResolver resolver) { if (context.IsSingletonLifetime()) { ScopedCacheManager.SetCache(((DependencyResolver) resolver).RootScoped, context.Dependency, context.Resolved); } if (context.IsScopedLifetime()) { ScopedCacheManager.SetCache((IScopedResolver) resolver, context.Dependency, context.Resolved); } }
public IEnumerable<IBinding> Resolve(IResolverContext context, Type type) { if (!type.IsGenericType) { return Enumerable.Empty<IBinding>(); } return context.FindBindings(type.GetGenericTypeDefinition()).Select(b => (IBinding)new Binding(type, new BindingMetadata()) { Provider = new StandardProvider(b.Provider.TargetType.MakeGenericType(type.GetGenericArguments().Where(t => !t.IsGenericParameter).ToArray())) }); }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var implType = context.DependencyEntry.ImplementationType; var constructor = implType.GetBastConstructor(_dependencyTable); if (constructor == null) throw new InvalidOperationException(implType.FullName + "不存在公共构造方法。"); var parameter = Expression.Parameter(typeof(object[]), "args"); var body = Expression.New(constructor, GetConstructorParameters(constructor, parameter)); var factory = Expression.Lambda<Func<IDependencyResolver, Object[], Object>>(body, Expression.Parameter(typeof(IDependencyResolver)), parameter); context.CompleteValue = factory; }
/// <summary> /// 从缓存中读取委托并调用 /// </summary> internal static bool TryGetCompileValue(this IDependencyTable dependencyTable, IResolverContext context, IDependencyResolver resolver) { Func<IDependencyResolver, Object> resultingValueFactory; if (dependencyTable.CompileTable.TryGetValue(DependencyTableHelper.GetCompileKey(context.DependencyEntry), out resultingValueFactory)) { context.CompleteValue = resultingValueFactory(resolver); if (dependencyTable.HasPropertyEntryTable.ContainsKey(context.DependencyEntry)) { new PropertyResolverCallSite().Resolver(context, resolver); } return true; } return false; }
/// <summary> /// 从缓存中读取委托并调用 /// </summary> internal static bool TryGetCompileValue(this IDependencyTable dependencyTable, IResolverContext context, IDependencyResolver resolver) { Func<IDependencyResolver,Object[], Object> resultingValueFactory; if (dependencyTable.CompileTable.TryGetValue(context.DependencyEntry, out resultingValueFactory)) { var args = context.DependencyEntry.GetImplementationType(). GetConstructorParameters(dependencyTable, resolver); context.CompleteValue = resultingValueFactory(resolver, args); if (dependencyTable.HasPropertyEntryTable.ContainsKey(context.DependencyEntry)) { new PropertyResolverCallSite(dependencyTable).Resolver(context, resolver); } } return context.Complete; }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="type"></param> /// <returns></returns> public IEnumerable<IBinding> Resolve(IResolverContext context, Type type) { if (type.IsInterface || type.IsAbstract || type.IsValueType || (type == StringType) || type.ContainsGenericParameters) { return Enumerable.Empty<IBinding>(); } return new[] { new Binding(type, new BindingMetadata()) { Provider = new StandardProvider(type) } }; }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { try { var factory = _dependencyTable.GetOrAddCompile(context.DependencyEntry, (serviceType, iImplementationType) => CreateDelegate((Expression)context.CompleteValue)); var completeValue = factory.Invoke(resolver); context.CompleteValue = completeValue; CacheComplete(context, resolver); context.Complete = !_dependencyTable.HasPropertyEntryTable.ContainsKey(context.DependencyEntry); } catch (Exception ex) { throw new InvalidOperationException(String.Format("未能创建类型\"{0}\"的实例。", context.DependencyEntry.ServiceType), ex); } }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { Object completeValue; if (_dependencyTable.TryGetScoped(context, null, out completeValue)) { context.CompleteValue = completeValue; context.Complete = true; return; } //if (_dependencyTable.TryGetCompileValue(context, resolver, out completeValue)) //{ // context.CompleteValue = completeValue; // context.Complete = true; // DependencyTableHelper.AddScoped(_dependencyTable, context, null); //} }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var properties = context.CompleteValue.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var property in properties) { try { PropertySetCacheManger.Cache(property, context.CompleteValue, resolver.Resolve(property.PropertyType)); } catch (Exception ex) { throw new InvalidOperationException(String.Format("类型\"{0}\"未能注入属性\"{1}\"的实例。", context.DependencyEntry.GetImplementationType(), property.PropertyType), ex); } } context.Complete = true; }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var implType = context.IsDynamicProxy() ? DynamicTypeCacheManager.GetCache(context.Dependency.ImplementationType) : context.Dependency.ImplementationType; var constructor = ResolverHelper.GetBastConstructor(implType, resolver); if (constructor == null) throw new InvalidOperationException($"{implType.FullName}不存在公共构造方法。"); var parameter = Expression.Parameter(typeof (object[]), "args"); context.Resolved = Expression. Lambda<Func<IDependencyResolver, object[], object>>( Expression.New(constructor, GetConstructorParameters(constructor, parameter)), Expression.Parameter(typeof (IDependencyResolver)), parameter); }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { try { var args = context.HasImplementationType() && context.HasPublicConstructor() ? ResolverHelper.GetConstructorParameters( context.Dependency.GetImplementationType(), resolver) : ArrayExtends.Empty<object>(); context.Resolved = CompileCacheManager.GetOrSetCache(context.Dependency, () => CreateDelegate(context.Resolved as Expression)). Invoke(resolver, args); CacheResolved(context, resolver); } catch (Exception ex) { throw new InvalidOperationException($"未能创建类型\"{context.Dependency.ServiceType}\"的实例。", ex); } }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { var properties = context.CompleteValue.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance). Where(property => _dependencyTable.PropertyEntryTable.ContainsKey(property.PropertyType)); foreach (var property in properties) { try { if (!property.IsDefined(typeof(IgnoreDependencyAttribute), false)) { PropertySetCacheManger.Cache(property, context.CompleteValue, resolver.Resolve(property.PropertyType)); } } catch (Exception ex) { throw new InvalidOperationException(String.Format("类型\"{0}\"未能注入属性\"{1}\"的实例。", context.DependencyEntry.GetImplementationType(), property.PropertyType), ex); } } context.Complete = true; }
public bool PreResolver(IResolverContext context, IDependencyResolver resolver) { return context.NotComplete() && context.IsSingletonLifetime(); }
/// <summary> /// Sorts the selection set of the request onto the enumerable. /// </summary> /// <param name="enumerable">The enumerable</param> /// <param name="context"> /// The resolver context of the resolver that is annotated with UseSorting /// </param> /// <returns>The sorted enumerable</returns> public static QueryableExecutable <T> Sort <T>( this QueryableExecutable <T> enumerable, IResolverContext context) => ExecuteSort(enumerable, context, typeof(QueryableExecutable <T>));
public ServiceScope(IResolverContext context) { Context = context; }
public bool IsOfType(IResolverContext context, object resolverResult) => _isOfType(context, resolverResult);
public IEnumerable <Foo> TypeMissmatch(IResolverContext context) { return(_fooEntities.Filter(context)); }
public async Task <Client> GetClient([Service] ApplicationDbContext db, IResolverContext context, int id) { var dataLoader = context.BatchDataLoader <int, Client>(nameof(GetClient), async ids => await db.Clients.Where(c => ids.Contains(c.Id)).ToDictionaryAsync(x => x.Id, x => x)); return(await dataLoader.LoadAsync(id, context.RequestAborted)); }
// typeof(MediatR.INotificationMediator<MediatR.Examples.Ponged>) internal static object Get1_INotificationMediator(IResolverContext r) { return(new MediatR.NotificationMediator <MediatR.Examples.Ponged>(new MediatR.INotificationHandler <MediatR.Examples.Ponged>[] { new MediatR.Examples.GenericHandler((System.IO.TextWriter)r.Resolve(typeof(System.IO.TextWriter), null, IfUnresolved.Throw, default(System.Type), Request.Empty.Push(typeof(MediatR.INotificationMediator <MediatR.Examples.Ponged>), typeof(MediatR.INotificationMediator <>), (object)null, 52, FactoryType.Service, typeof(MediatR.NotificationMediator <MediatR.Examples.Ponged>), Reuse.Transient, RequestFlags.IsResolutionCall).Push(typeof(System.Collections.Generic.IEnumerable <MediatR.INotificationHandler <MediatR.Examples.Ponged> >), default(System.Type), (object)null, 2, FactoryType.Wrapper, default(System.Type), Reuse.Transient, ((RequestFlags)0)).Push(typeof(MediatR.INotificationHandler <MediatR.Examples.Ponged>), typeof(MediatR.INotificationHandler <MediatR.INotification>), (object)null, IfUnresolved.ReturnDefaultIfNotRegistered, 34, FactoryType.Service, typeof(MediatR.Examples.GenericHandler), Reuse.Transient, ((RequestFlags)0), 0), default(object[]))), new MediatR.Examples.PongedHandler((System.IO.TextWriter)r.Resolve(typeof(System.IO.TextWriter), null, IfUnresolved.Throw, default(System.Type), Request.Empty.Push(typeof(MediatR.INotificationMediator <MediatR.Examples.Ponged>), typeof(MediatR.INotificationMediator <>), (object)null, 52, FactoryType.Service, typeof(MediatR.NotificationMediator <MediatR.Examples.Ponged>), Reuse.Transient, RequestFlags.IsResolutionCall).Push(typeof(System.Collections.Generic.IEnumerable <MediatR.INotificationHandler <MediatR.Examples.Ponged> >), default(System.Type), (object)null, 2, FactoryType.Wrapper, default(System.Type), Reuse.Transient, ((RequestFlags)0)).Push(typeof(MediatR.INotificationHandler <MediatR.Examples.Ponged>), default(System.Type), (object)DefaultKey.Of(0), IfUnresolved.ReturnDefaultIfNotRegistered, 43, FactoryType.Service, typeof(MediatR.Examples.PongedHandler), Reuse.Transient, ((RequestFlags)0), 0), default(object[]))) })); }
public CarefulAccount(Log log, IResolverContext scope) : base(log) { _scope = scope; }
public SomeRoot(SomeDep dep, IResolverContext scope) { _scope = scope; Dep = dep; }
public L(K k, IResolverContext scope) { K = k; Scope = scope; }
public override ValueTask <Message> MessageAdded(object objectValue, int channelId, IResolverContext context) { var message = (Message)context.ObjectValue; return(new ValueTask <Message>(message)); }
public override ValueTask <ISubscriberResult> MessageAdded(Subscription?objectValue, int channelId, CancellationToken unsubscribe, IResolverContext context) { return(new ValueTask <ISubscriberResult>(_channels.Join(channelId, unsubscribe))); }
public JobHostServiceScope(IResolverContext serviceProvider) { _serviceProvider = new ScopedServiceProvider(serviceProvider); }
/// <summary> /// 获取作用域缓存的key /// </summary> internal static Tuple <IScopedResolver, DependencyEntry> GetScopedKey(IResolverContext context, IDependencyResolver resolver) { return(new Tuple <IScopedResolver, DependencyEntry>((IScopedResolver)resolver, context.DependencyEntry)); }
public void ResolverContext(IResolverContext context) { Id = context.Argument <int>("id"); }
/// <summary> /// 从缓存中读取委托并调用 /// </summary> internal static bool TryGetCompileValue(this IDependencyTable dependencyTable, IResolverContext context, IDependencyResolver resolver) { Func <IDependencyResolver, Object[], Object> resultingValueFactory; if (dependencyTable.CompileTable.TryGetValue(context.DependencyEntry, out resultingValueFactory)) { var args = context.DependencyEntry.GetImplementationType(). GetConstructorParameters(dependencyTable, resolver); context.CompleteValue = resultingValueFactory(resolver, args); if (dependencyTable.HasPropertyEntryTable.ContainsKey(context.DependencyEntry)) { new PropertyResolverCallSite(dependencyTable).Resolver(context, resolver); } } return(context.Complete); }
public IEnumerable <Foo> MissingMiddleware(IResolverContext context) { return(_fooEntities.Filter(context)); }
/// Constructs an adapter public ContainerAdapter(IResolverContext container) { Container = container; }
/// <summary> /// Constructor /// </summary> /// <param name="context"></param> /// <param name="locator"></param> public DryIocLocatorScoped(IResolverContext context, ILocator locator) { _resolveContext = context; Parent = locator as ILocatorScoped; }
public bool Requires(IResolverContext context, IDependencyResolver resolver) { return context.NotResolved() && context.IsTransientLifetime(); }
public string GetRequestPath2(IResolverContext context) { return(context.Service <IOwinContext>().Request.Path.Value); }
public void Resolver(IResolverContext context, IDependencyResolver resolver) { context.CompleteValue = Expression.Constant( context.DependencyEntry.ImplementationInstance, context.DependencyEntry.ServiceType); }
public bool PreResolver(IResolverContext context, IDependencyResolver resolver) { return context.NotComplete(); }
public ObjectType ResolveType( IResolverContext context, object resolverResult) => _resolveAbstractType(context, resolverResult);
public bool Requires(IResolverContext context, IDependencyResolver resolver) { return context.NotResolved() && context.Resolved == null && context.HasImplementationType() && !context.HasPublicConstructor(); }
/// <summary>Creating from resolver context</summary> public DryIocServiceScope(IResolverContext resolverContext) { _resolverContext = resolverContext; }
/// <summary> /// Sorts the selection set of the request onto the enumerable. /// </summary> /// <param name="enumerable">The enumerable</param> /// <param name="context"> /// The resolver context of the resolver that is annotated with UseSorting /// </param> /// <returns>The sorted enumerable</returns> public static IEnumerable <T> Sort <T>( this IEnumerable <T> enumerable, IResolverContext context) => ExecuteSort(enumerable, context, typeof(IEnumerable <T>));
public IEnumerable <Foo> ShouldWork(IResolverContext context) { return(_fooEntities.Filter(context)); }
public FooDecorator(IFoo foo, IResolverContext ctx) { _foo = foo; _ctx = ctx; }
/// Constructs a wrapper public Owned(T value, IResolverContext lifetime) { _lifetime = lifetime; Value = value; }
/// <summary> /// Sorts the selection set of the request onto the queryable. /// </summary> /// <param name="queryable">The queryable</param> /// <param name="context"> /// The resolver context of the resolver that is annotated with UseSorting /// </param> /// <returns>The sorted queryable</returns> public static IQueryable <T> Sort <T>( this IQueryable <T> queryable, IResolverContext context) => ExecuteSort(queryable, context, typeof(IQueryable <T>));
public string GetRequestPath2(IResolverContext context) { return(context.Service <IHttpContextAccessor>() .HttpContext.Request.Path); }
public bool PreResolver(IResolverContext context, IDependencyResolver resolver) { return context.NotComplete() && context.HasImplementationInstance(); }
public object Create(IResolverContext resolverContext, Type[] genericTypeArguments) { return(_factory(resolverContext)); }
// typeof(MediatR.IRequestMediator<MediatR.Examples.Jing, MediatR.Unit>) internal static object Get3_IRequestMediator(IResolverContext r) { return(new MediatR.RequestMediator <MediatR.Examples.Jing, MediatR.Unit>(new MediatR.Examples.JingHandler((System.IO.TextWriter)r.Resolve(typeof(System.IO.TextWriter), null, IfUnresolved.Throw, default(System.Type), Request.Empty.Push(typeof(MediatR.IRequestMediator <MediatR.Examples.Jing, MediatR.Unit>), typeof(MediatR.IRequestMediator <,>), (object)null, 60, FactoryType.Service, typeof(MediatR.RequestMediator <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, RequestFlags.IsResolutionCall).Push(typeof(MediatR.IRequestHandler <MediatR.Examples.Jing, MediatR.Unit>), 39, typeof(MediatR.Examples.JingHandler), Reuse.Transient), default(object[]))), new MediatR.IPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit>[] { new MediatR.Pipeline.RequestPostProcessorBehavior <MediatR.Examples.Jing, MediatR.Unit>(new MediatR.Pipeline.IRequestPostProcessor <MediatR.Examples.Jing, MediatR.Unit>[] { new MediatR.Examples.GenericRequestPostProcessor <MediatR.Examples.Jing, MediatR.Unit>((System.IO.TextWriter)r.Resolve(typeof(System.IO.TextWriter), null, IfUnresolved.Throw, default(System.Type), Request.Empty.Push(typeof(MediatR.IRequestMediator <MediatR.Examples.Jing, MediatR.Unit>), typeof(MediatR.IRequestMediator <,>), (object)null, 60, FactoryType.Service, typeof(MediatR.RequestMediator <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, RequestFlags.IsResolutionCall).Push(typeof(System.Collections.Generic.IEnumerable <MediatR.IPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit> >), default(System.Type), (object)null, 2, FactoryType.Wrapper, default(System.Type), Reuse.Transient, ((RequestFlags)0)).Push(typeof(MediatR.IPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit>), default(System.Type), (object)DefaultKey.Of(0), IfUnresolved.ReturnDefaultIfNotRegistered, 61, FactoryType.Service, typeof(MediatR.Pipeline.RequestPostProcessorBehavior <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, ((RequestFlags)0), 0).Push(typeof(System.Collections.Generic.IEnumerable <MediatR.Pipeline.IRequestPostProcessor <MediatR.Examples.Jing, MediatR.Unit> >), default(System.Type), (object)null, 2, FactoryType.Wrapper, default(System.Type), Reuse.Transient, ((RequestFlags)0)).Push(typeof(MediatR.Pipeline.IRequestPostProcessor <MediatR.Examples.Jing, MediatR.Unit>), default(System.Type), (object)DefaultKey.Of(1), IfUnresolved.ReturnDefaultIfNotRegistered, 62, FactoryType.Service, typeof(MediatR.Examples.GenericRequestPostProcessor <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, ((RequestFlags)0), 0), default(object[]))) }), new MediatR.Pipeline.RequestPreProcessorBehavior <MediatR.Examples.Jing, MediatR.Unit>(new MediatR.Pipeline.IRequestPreProcessor <MediatR.Examples.Jing>[] { new MediatR.Examples.GenericRequestPreProcessor <MediatR.Examples.Jing>((System.IO.TextWriter)r.Resolve(typeof(System.IO.TextWriter), null, IfUnresolved.Throw, default(System.Type), Request.Empty.Push(typeof(MediatR.IRequestMediator <MediatR.Examples.Jing, MediatR.Unit>), typeof(MediatR.IRequestMediator <,>), (object)null, 60, FactoryType.Service, typeof(MediatR.RequestMediator <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, RequestFlags.IsResolutionCall).Push(typeof(System.Collections.Generic.IEnumerable <MediatR.IPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit> >), default(System.Type), (object)null, 2, FactoryType.Wrapper, default(System.Type), Reuse.Transient, ((RequestFlags)0)).Push(typeof(MediatR.IPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit>), default(System.Type), (object)DefaultKey.Of(1), IfUnresolved.ReturnDefaultIfNotRegistered, 63, FactoryType.Service, typeof(MediatR.Pipeline.RequestPreProcessorBehavior <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, ((RequestFlags)0), 0).Push(typeof(System.Collections.Generic.IEnumerable <MediatR.Pipeline.IRequestPreProcessor <MediatR.Examples.Jing> >), default(System.Type), (object)null, 2, FactoryType.Wrapper, default(System.Type), Reuse.Transient, ((RequestFlags)0)).Push(typeof(MediatR.Pipeline.IRequestPreProcessor <MediatR.Examples.Jing>), default(System.Type), (object)DefaultKey.Of(0), IfUnresolved.ReturnDefaultIfNotRegistered, 64, FactoryType.Service, typeof(MediatR.Examples.GenericRequestPreProcessor <MediatR.Examples.Jing>), Reuse.Transient, ((RequestFlags)0), 0), default(object[]))) }), new MediatR.Examples.GenericPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit>((System.IO.TextWriter)r.Resolve(typeof(System.IO.TextWriter), null, IfUnresolved.Throw, default(System.Type), Request.Empty.Push(typeof(MediatR.IRequestMediator <MediatR.Examples.Jing, MediatR.Unit>), typeof(MediatR.IRequestMediator <,>), (object)null, 60, FactoryType.Service, typeof(MediatR.RequestMediator <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, RequestFlags.IsResolutionCall).Push(typeof(System.Collections.Generic.IEnumerable <MediatR.IPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit> >), default(System.Type), (object)null, 2, FactoryType.Wrapper, default(System.Type), Reuse.Transient, ((RequestFlags)0)).Push(typeof(MediatR.IPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit>), default(System.Type), (object)DefaultKey.Of(2), IfUnresolved.ReturnDefaultIfNotRegistered, 65, FactoryType.Service, typeof(MediatR.Examples.GenericPipelineBehavior <MediatR.Examples.Jing, MediatR.Unit>), Reuse.Transient, ((RequestFlags)0), 0), default(object[]))) })); }
public async IAsyncEnumerable <ReferenceValueChange> References(string[] names, IResolverContext context, [Service] ITopicEventReceiver receiver) { foreach (var name in names) { var value = _valueReader.Read(name); yield return(new ReferenceValueChange(name, value)); } await foreach (var change in await receiver.SubscribeAsync <string, ReferenceValueChange>(ReferenceValueChange.Topic, context.RequestAborted)) { if (names.Contains(change.Name)) { yield return(change); } } }