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;
        }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 10
0
        /// <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;
 }
Ejemplo n.º 18
0
        /// <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();
 }
Ejemplo n.º 26
0
 /// <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>));
Ejemplo n.º 27
0
 public ServiceScope(IResolverContext context)
 {
     Context = context;
 }
Ejemplo n.º 28
0
 public bool IsOfType(IResolverContext context, object resolverResult)
 => _isOfType(context, resolverResult);
 public IEnumerable <Foo> TypeMissmatch(IResolverContext context)
 {
     return(_fooEntities.Filter(context));
 }
Ejemplo n.º 30
0
        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));
        }
Ejemplo n.º 31
0
 // 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[]))) }));
 }
Ejemplo n.º 32
0
 public CarefulAccount(Log log, IResolverContext scope) : base(log)
 {
     _scope = scope;
 }
Ejemplo n.º 33
0
 public SomeRoot(SomeDep dep, IResolverContext scope)
 {
     _scope = scope;
     Dep    = dep;
 }
Ejemplo n.º 34
0
 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));
 }
Ejemplo n.º 42
0
 /// Constructs an adapter
 public ContainerAdapter(IResolverContext container)
 {
     Container = container;
 }
Ejemplo n.º 43
0
 /// <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();
 }
Ejemplo n.º 45
0
 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();
 }
Ejemplo n.º 48
0
 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();
 }
Ejemplo n.º 50
0
 /// <summary>Creating from resolver context</summary>
 public DryIocServiceScope(IResolverContext resolverContext)
 {
     _resolverContext = resolverContext;
 }
Ejemplo n.º 51
0
 /// <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));
 }
Ejemplo n.º 53
0
 public FooDecorator(IFoo foo, IResolverContext ctx)
 {
     _foo = foo;
     _ctx = ctx;
 }
Ejemplo n.º 54
0
 /// Constructs a wrapper
 public Owned(T value, IResolverContext lifetime)
 {
     _lifetime = lifetime;
     Value     = value;
 }
Ejemplo n.º 55
0
 /// <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>));
Ejemplo n.º 56
0
 public string GetRequestPath2(IResolverContext context)
 {
     return(context.Service <IHttpContextAccessor>()
            .HttpContext.Request.Path);
 }
 public bool PreResolver(IResolverContext context, IDependencyResolver resolver)
 {
     return context.NotComplete() && context.HasImplementationInstance();
 }
Ejemplo n.º 58
0
 public object Create(IResolverContext resolverContext, Type[] genericTypeArguments)
 {
     return(_factory(resolverContext));
 }
Ejemplo n.º 59
0
 // 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[]))) }));
 }
Ejemplo n.º 60
0
        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);
                }
            }
        }