public IEnumerator <KeyValuePair <object, object> > GetEnumerator() { return (_innerMap .Where(item => item.Key.IsAlive) .ToDictionary(item => WeakReferenceWrapper.Unwrap(item.Key), item => WeakReferenceWrapper.Unwrap(item.Value)) .ToList() .GetEnumerator()); }
public void CopyTo(Array array, int index) { var weakArray = _innerMap.ToDictionary(pair => WeakReferenceWrapper.Unwrap(pair.Key), pair => WeakReferenceWrapper.Unwrap(pair.Value)) .ToArray(); Array.Copy(weakArray, 0, array, index, weakArray.Length); }
public object this[object key] { get { if (Contains(key) == false) { return(null); } return(WeakReferenceWrapper.Unwrap(_innerMap[WeakReferenceWrapper.Wrap(key)])); } set { Scavenge(); _innerMap.AddValue(WeakReferenceWrapper.Wrap(key), WeakReferenceWrapper.Wrap(value)); } }