Ejemplo n.º 1
0
        private void SetOwnerCore(JobMode newOwnerJob)
        {
            if (newOwnerJob == null)
            {
                throw new ArgumentNullException(nameof(newOwnerJob));
            }

            AssertNotFrozen();
            newOwnerJob.AssertIsNonFrozenRoot();

            owner        = newOwnerJob;
            sharedValues = newOwnerJob.sharedValues;
            frozen       = false;
        }
Ejemplo n.º 2
0
        private void AttachToOwner(JobMode newOwnerJob, Characteristic thisCharacteristic)
        {
            if (newOwnerJob == null)
            {
                throw new ArgumentNullException(nameof(newOwnerJob));
            }
            if (IsPropertyBag)
            {
                throw new InvalidOperationException(
                          $"The property bag {this} cannot be used as characteristic's value.");
            }

            AssertIsNonFrozenRoot();
            newOwnerJob.AssertIsNonFrozenRoot();

            var oldValues = sharedValues;

            newOwnerJob.SetValueOnAttach(thisCharacteristic, this);
            foreach (var pair in oldValues)
            {
                newOwnerJob.SetValueOnAttach(pair.Key, pair.Value);
            }
        }