public ObjectBuilderCallBackHandler(
            Tasks.ITaskRunner taskRunner,
            ObjectBuildingInfo <TAddress> objectBuilderInfo,
            IEnumerable <Tuple <ObjectBuilders.IDependency <TAddress>, IObjectBuildingInfo <TAddress> > > dependencies)
        {
            if (taskRunner == null)
            {
                throw new ArgumentNullException(nameof(taskRunner));
            }

            if (dependencies == null)
            {
                dependencies = new Tuple <ObjectBuilders.IDependency <TAddress>, IObjectBuildingInfo <TAddress> > [0];
            }

            this.TaskRunner        = taskRunner;
            this.Dependencies      = new List <Tuple <ObjectBuilders.IDependency <TAddress>, IObjectBuildingInfo <TAddress> > >(dependencies);
            this.ObjectBuilderInfo = objectBuilderInfo;

            this._outstandingDependencies = this.Dependencies.Count;
            if (_outstandingDependencies == 0)
            {
                this.RunBuilder();
            }
        }
Example #2
0
        /// <summary>
        /// Creates a new instance of the <see cref="ObjectContext{TAddress}"/> with the given parameters
        /// </summary>
        /// <param name="parentContext">Optional parent context</param>
        /// <param name="objectBuilderProvider">The object builder provider to use for this context</param>
        /// <param name="taskRunner">The task runner for jobs for this context</param>
        public ObjectContext(IObjectContext <TAddress> parentContext,
                             ObjectBuilders.IObjectBuilderProvider <TAddress> objectBuilderProvider,
                             Tasks.ITaskRunner taskRunner)
        {
            if (objectBuilderProvider == null)
            {
                throw new ArgumentNullException(nameof(objectBuilderProvider));
            }

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

            this.ParentContext         = parentContext;
            this.ObjectBuilderProvider = objectBuilderProvider;
            this.TaskRunner            = taskRunner;
        }