private void SetOwnerCore(JobMode newOwnerJob) { if (newOwnerJob == null) { throw new ArgumentNullException(nameof(newOwnerJob)); } AssertNotFrozen(); newOwnerJob.AssertIsNonFrozenRoot(); owner = newOwnerJob; sharedValues = newOwnerJob.sharedValues; frozen = false; }
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); } }