Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="IxHost"/> class.
        /// This is first build phase. Second phase performed by <see cref="Initialize"/>.
        /// </summary>
        public IxHost()
        {
            _argumentProvider = new IxArgumentProvider(this);

            // TODO: Load priorities from configs.
            InstanceFactoryBuilder.Add(ExistingInstanceRawFactoryBuilder, 100);
            InstanceFactoryBuilder.Add(ClassInstanceFactoryBuilder, 200);
            InstanceFactoryBuilder.Add(DelegateInstanceBuilder, 300);

            VisibilityFilterBuilder.Add(StdVisibilityFilterBuilder, 100);

            ProviderNodeBuilder.Add(StdProviderConfigDefaultsSetter, 100);
            ProviderNodeBuilder.Add(ScopeBuilder, 200);
            ProviderNodeBuilder.Add(SingletonProviderBuilder, 300);
            ProviderNodeBuilder.Add(PerResolveProviderBuilder, 400);

            ScopeBinderBuilder.Add(RegistrationScopeBinderBuilder, 100);

            DisposeHandlerBuilder.Add(DisposableDisposeHandlerBuilder, 100);
            DisposeHandlerBuilder.Add(AsyncDisposableDisposeHandlerBuilder, 200);

            ResolveHandler.Add(SelfResolveInterceptor, 80);
            ResolveHandler.Add(ResolverResolveInterceptor, 100);
            ResolveHandler.Add(DirectCycleResolveInterceptor, 150);
            ResolveHandler.Add(SelfToChildrenResolver, 200);
            ResolveHandler.Add(StdResolveInterceptor, 300);
            ResolveHandler.Add(ResolveContextResolveInterceptor, 400);
        }
Ejemplo n.º 2
0
        private async ValueTask <IIxInstanceLock> Resolve(
            IIxInstance originInstance,
            IxIdentifier identifier,
            IxResolveContext context,
            [CanBeNull] IxResolveFrame frame)
        {
            if (originInstance == null)
            {
                throw new ArgumentNullException(nameof(originInstance));
            }

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (originInstance.ProviderNode.Host != this)
            {
                throw new InvalidOperationException("You cannot use resolver from different host.");
            }

            ////if (context.IsFailed)
            ////{
            ////    throw new InvalidOperationException("You cannot do anything inside failed resolve context.");
            ////}
            return(await ResolveHandler.Delegate(originInstance, identifier, context, frame));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Create async or threaded task
        /// </summary>
        public SearchTask(string name, string title, ResolveHandler finished, int total, ITaskReporter reporter)
            : this(name, title, reporter)
        {
            this.total    = total;
            this.finished = finished;
            progressId    = StartReport(title);
            cancelEvent   = new EventWaitHandle(false, EventResetMode.ManualReset);

            if (IsProgressRunning(progressId))
            {
                Progress.RegisterCancelCallback(progressId, () => cancelEvent.Set());
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ObjectDefinitionVisitor"/> class.
 /// </summary>
 /// <param name="resolveHandler">The handler to be called for resolving variables contained in a string.</param>
 public ObjectDefinitionVisitor(ResolveHandler resolveHandler)
 {
     AssertUtils.ArgumentNotNull(resolveHandler, "ResovleHandler");
     this.resolveHandler = resolveHandler;
 }
Ejemplo n.º 5
0
 public static int ShowWorld(ResolveHandler resolve, int ii)
 {
     return(resolve(ii));
 }
Ejemplo n.º 6
0
 public SearchTask(string name, string title, ResolveHandler finished, ITaskReporter reporter)
     : this(name, title, finished, 1, reporter)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ObjectDefinitionVisitor"/> class.
 /// </summary>
 /// <param name="resolveHandler">The handler to be called for resolving variables contained in a string.</param>
 public ObjectDefinitionVisitor(ResolveHandler resolveHandler)
 {
     AssertUtils.ArgumentNotNull(resolveHandler, "ResovleHandler");
     this.resolveHandler = resolveHandler;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EventDependencyResolver" /> class.
 /// </summary>
 /// <param name="resolveMethod">The dependency resolve method.</param>
 /// <param name="beginLifetimeScopeMethod">The begin lifetime scope method.</param>
 public EventDependencyResolver(ResolveHandler resolveMethod, BeginLifetimeScopeHandler beginLifetimeScopeMethod = null)
 {
     ResolveMethod = resolveMethod;
     BeginLifetimeScopeMethod = beginLifetimeScopeMethod;
 }