Ejemplo n.º 1
0
 public bool Equals(IWeakEventSubscriber <TEventArgs> r)
 {
     if (_reference == null || r.GetHashCode() != _hashCode)
     {
         return(false);
     }
     return(_reference.TryGetTarget(out var target) && target == r);
 }
Ejemplo n.º 2
0
 public bool TryGetTarget([MaybeNullWhen(false)] out IWeakEventSubscriber <TEventArgs> target)
 {
     if (_reference == null)
     {
         target = null !;
         return(false);
     }
     return(_reference.TryGetTarget(out target));
 }
Ejemplo n.º 3
0
            public Entry(IWeakEventSubscriber <TEventArgs> r)
            {
                if (r == null)
                {
                    _reference = null;
                    _hashCode  = 0;
                    return;
                }

                _hashCode  = r.GetHashCode();
                _reference = new WeakReference <IWeakEventSubscriber <TEventArgs> >(r);
            }
Ejemplo n.º 4
0
        public void Remove(IWeakEventSubscriber <TEventArgs> s)
        {
            var removed = false;

            for (int c = 0; c < _count; ++c)
            {
                var reference = _data[c];

                if (reference != null && reference.TryGetTarget(out var instance) && instance == s)
                {
                    _data[c] = null;
                    removed  = true;
                }
            }

            if (removed)
            {
                ScheduleCompact();
            }
        }