public bool TryGetTarget(out T target) { lock (_managedWeakReference) { return(_managedWeakReference.TryGetTarget(out target)); } }
public int GetHashCode(System.WeakReference <T> w) { T t; return(w.TryGetTarget(out t) ? t.GetHashCode() : -1); }
public bool Equals(System.WeakReference <T> w1, T t2) { T t1; var r1 = w1.TryGetTarget(out t1); return((!r1 && t1 != null) || t1.SafeEquals(t2)); }
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); }
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); }
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)); }
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)); }
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); } } }
public static bool HasTarget <T>(this System.WeakReference <T> wr) where T : class { T value; return(wr.TryGetTarget(out value)); }