コード例 #1
0
        public static bool AddObjectDependency(WeakReference weakRefDp, object objToHold)
        {
            ObjectDependencyManager.CleanUp();
            if (objToHold == null)
            {
                throw new ArgumentNullException("objToHold", "The objToHold cannot be null");
            }
            if (objToHold.GetType() == typeof(WeakReference))
            {
                throw new ArgumentException("objToHold cannot be type of WeakReference", "objToHold");
            }
            if (weakRefDp.Target == objToHold)
            {
                throw new InvalidOperationException("The WeakReference.Target cannot be the same as objToHold");
            }
            bool result = false;

            if (!ObjectDependencyManager.internalList.ContainsKey(objToHold))
            {
                List <WeakReference> value = new List <WeakReference>
                {
                    weakRefDp
                };
                ObjectDependencyManager.internalList.Add(objToHold, value);
                result = true;
            }
            else
            {
                List <WeakReference> list = ObjectDependencyManager.internalList[objToHold];
                if (!list.Contains(weakRefDp))
                {
                    list.Add(weakRefDp);
                    result = true;
                }
            }
            return(result);
        }
コード例 #2
0
 public static void CleanUp()
 {
     ObjectDependencyManager.CleanUp(null);
 }