Exemple #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_CaseSensitive, m_Data);
                data.Add(item.Name, item);

                JustRegistered(item);

                m_Data = data; //atomic
            }

            return(true);
        }
Exemple #2
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)
        {
            ((object)item).NonNull(nameof(item));

            lock (m_Sync)
            {
                if (m_Data.ContainsKey(item.Name))
                {
                    return(false);
                }

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

                JustRegistered(item);

                Thread.MemoryBarrier();
                m_Data = data; //atomic
            }

            return(true);
        }