示例#1
0
        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);
        }
示例#2
0
 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);
 }