コード例 #1
0
 public bool TryGetTarget(out T target)
 {
     lock (_managedWeakReference)
     {
         return(_managedWeakReference.TryGetTarget(out target));
     }
 }
コード例 #2
0
        public int GetHashCode(System.WeakReference <T> w)
        {
            T t;

            return(w.TryGetTarget(out t)
                                ? t.GetHashCode()
                                : -1);
        }
コード例 #3
0
        public bool Equals(System.WeakReference <T> w1, T t2)
        {
            T t1;

            var r1 = w1.TryGetTarget(out t1);

            return((!r1 && t1 != null) ||
                   t1.SafeEquals(t2));
        }
コード例 #4
0
        public static T GetTarget <T>(this System.WeakReference <T> wr) where T : class
        {
            T value;

            if (!wr.TryGetTarget(out value))
            {
                value = default(T);
            }
            return(value);
        }
コード例 #5
0
        public static T FindOrCreate <T>(this System.WeakReference <T> wr, Func <T> factory) where T : class
        {
            T value;

            if (!wr.TryGetTarget(out value))
            {
                value = factory();
                wr.SetTarget(value);
            }
            return(value);
        }
コード例 #6
0
        public bool Equals(System.WeakReference <T> w1, System.WeakReference <T> w2)
        {
            T t1;
            T t2;

            var r1 = w1.TryGetTarget(out t1);
            var r2 = w2.TryGetTarget(out t2);

            return(((r1 && r2) || (!r1 && !r2)) &&
                   t1.SafeEquals(t2));
        }
コード例 #7
0
        public bool Equals(System.WeakReference <T>?w1, System.WeakReference <T>?w2)
        {
            T?t1 = null;
            T?t2 = null;

            var r1 = w1?.TryGetTarget(out t1) ?? false;
            var r2 = w2?.TryGetTarget(out t2) ?? false;

            return(((r1 && r2) || (!r1 && !r2)) &&
                   SafeEquals <T>(t1, t2));
        }
コード例 #8
0
 public bool TryGetTarget(out T target)
 {
     lock (_managedWeakReference)
     {
         if (_managedWeakReference.TryGetTarget(out target))
         {
             return(true);
         }
         else
         {
             target = ResolveNativeWeakReference(_nativeWeakReference)?.As <T>();
             _managedWeakReference.SetTarget(target);
             return(target is object);
         }
     }
 }
コード例 #9
0
        public static bool HasTarget <T>(this System.WeakReference <T> wr) where T : class
        {
            T value;

            return(wr.TryGetTarget(out value));
        }