Ejemplo n.º 1
0
        /// <summary>
        /// Registers item and returns true if it was registered, false if this named instance already existed in the list
        /// </summary>
        public bool Register(T item)
        {
            lock (m_Sync)
            {
                if (m_Data.ContainsKey(item.Name))
                {
                    return(false);
                }

                var data = new RegistryDictionary <T>(m_Data);
                data.Add(item.Name, item);

                JustRegistered(item);

                m_Data = data;
            }

            return(true);
        }
Ejemplo n.º 2
0
        /// <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);
        }