/// <summary> /// Removes a data object from the internal dictionary by key. /// </summary> /// <param name="key">The key for the data object to remove.</param> public void Remove(string key) { if (!ChildDataObjects.ContainsKey(key)) { return; } if (Constants.StringComparer.Compare(_lastUsedDataObject.Namespace, key) == 0) { _lastUsedDataObject = null; } TC childDataObject; ChildDataObjects.TryRemove(key, out childDataObject); childDataObject.ParentMetaObject = null; }
/// <summary> /// Removes a data object from the internal dictionary by value. /// </summary> /// <param name="childDataObject">The child data object to remove.</param> public void Remove(TC childDataObject) { if (!ChildDataObjects.ContainsKey(childDataObject.Namespace)) { return; } if (Constants.StringComparer.Compare(_lastUsedDataObject.Namespace, childDataObject.Namespace) == 0 || _lastUsedDataObject.Equals(childDataObject)) { _lastUsedDataObject = null; } TC childDataObjectToRemove; ChildDataObjects.TryRemove(childDataObject.Namespace, out childDataObjectToRemove); childDataObject.ParentMetaObject = null; }