예제 #1
0
 public static void UnregisterProvider <T>(IDatumAccessor <T> provider)    //nothrow
 {
     if (provider != null)
     {
         lock (m_tableProviders)
         {
             uint key = Locate(provider);
             m_tableProviders[key].Remove(provider);
         }
     }
 }
예제 #2
0
        static bool IsProviderRegistered <T>(IDatumAccessor <T> provider)
        {
            if (provider == null)
            {
                return(false);
            }

            lock (m_tableProviders)
            {
                return(Locate(provider) != 0);
            }
        }
예제 #3
0
        //private:
        static uint Locate <T>(IDatumAccessor <T> provider)
        {
            foreach (uint key in m_tableProviders.Keys)
            {
                if (m_tableProviders[key].Contains(provider))
                {
                    return(key);
                }
            }

            return(0);
        }
예제 #4
0
        public static void RegisterProvider <T>(IDatumAccessor <T> provider, IDatumAccessor <T> dpSame)   //nothrow
        {
            Debug.Assert(provider != null);
            Debug.Assert(dpSame != null);


            lock (m_tableProviders)
            {
                Debug.Assert(IsProviderRegistered(dpSame));

                uint tblID = Locate(dpSame);
                m_tableProviders[tblID].Add(provider);
            }
        }
예제 #5
0
        public static void RegisterProvider <T>(IDatumAccessor <T> provider, uint tblID) //nothrow
        {
            Debug.Assert(provider != null);

            lock (m_tableProviders)
            {
                if (!m_tableProviders.ContainsKey(tblID))
                {
                    m_tableProviders.Add(tblID, new List <object>());
                }

                m_tableProviders[tblID].Add(provider);
            }
        }