private OuterEntry RecordOuter(TOuter outerItem)
        {
            _outerReferenceTracker.Add(outerItem);

            OuterEntry outerEntry;

            if (!_outerEntries.TryGetValue(outerItem, out outerEntry))
            {
                TKey outerKey = _outerKeySelector(outerItem);

                outerEntry = new OuterEntry(outerItem, outerKey);

                outerEntry.Result = _resultSelector(outerItem, outerEntry.MatchingInnersReadOnly);

                _outerEntries[outerItem] = outerEntry;

                var outersMatchingKey = _keyToOuterLookup.GetOrCreate(outerKey, () => new List <OuterEntry>(1));
                outersMatchingKey.Add(outerEntry);

                AddAllInnersMatchingKey(outerEntry);
            }

            return(outerEntry);
        }
 protected override void InsertItem(int index, T item)
 {
     _tracker.Add(item);
     base.InsertItem(index, item);
 }
Ejemplo n.º 3
0
        public void Add_ItemNotCurrentlyBeingTracked_ReturnsTrue()
        {
            Person person = new Person();

            Assert.IsTrue(_target.Add(person));
        }