/// <summary> /// Unregisters item by name and returns true if it was unregistered, false if it did not exist /// </summary> public bool Unregister(string name) { lock (m_Sync) { T item; if (!m_Data.TryGetValue(name, out item)) { return(false); } var data = new RegistryDictionary <T>(m_Data); data.Remove(name); JustUnregistered(item); m_Data = data; } return(true); }
/// <summary> /// Registers item and returns true if it was registered, false if this named instance already existed and was replaced /// </summary> public bool RegisterOrReplace(T item, out T existing) { lock (m_Sync) { var data = new RegistryDictionary <T>(m_Data); if (data.TryGetValue(item.Name, out existing)) { data[item.Name] = item; JustReplaced(existing, item); } else { existing = default(T);//safeguard data.Add(item.Name, item); JustRegistered(item); } m_Data = data; } return(existing == null); }