private bool MoveToNext() { bool ret = false; bool?filterRet = null; _current = default(T); while (ret = _enumerator.MoveNext()) { if (_filterFunc != null) { filterRet = _filterFunc(_enumerator.Current); } if (filterRet == null) { _current = default(T); return(false); } if (filterRet.Value) { continue; } _current = _enumerator.Current; if (_current != null && _firstItem) { _firstItem = false; MembersDiscovered.Raise(this, new ChoEventArgs <IDictionary <string, Type> >(GetMembers(_current).ToDictionary(kvp => kvp.Key, kvp => kvp.Value))); } break; } return(ret); }
public ChoStdDeferedObjectMemberDiscoverer(IEnumerable collection) { _collection = collection; _enumerator = new ChoPeekEnumerator <object>(_collection.OfType <object>(), (Func <object, bool?>)null); _enumerator.MembersDiscovered += (o, e) => MembersDiscovered.Raise(o, e); }