| File: System\Diagnostics\EventLogEntryCollection.cs | Web Access |
| Project: src\runtime\src\libraries\System.Diagnostics.EventLog\src\System.Diagnostics.EventLog.csproj (System.Diagnostics.EventLog) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; namespace System.Diagnostics { public class EventLogEntryCollection : ICollection { private readonly EventLogInternal _log; internal EventLogEntryCollection(EventLogInternal log) { _log = log; } public int Count { get { return _log.EntryCount; } } public virtual EventLogEntry this[int index] { get { return _log.GetEntryAt(index); } } public void CopyTo(EventLogEntry[] entries, int index) { ((ICollection)this).CopyTo((Array)entries, index); } public IEnumerator GetEnumerator() { return new EntriesEnumerator(this); } internal EventLogEntry? GetEntryAtNoThrow(int index) { return _log.GetEntryAtNoThrow(index); } bool ICollection.IsSynchronized { get { return false; } } object ICollection.SyncRoot { get { return this; } } void ICollection.CopyTo(Array array, int index) { EventLogEntry[] entries = _log.GetAllEntries(); Array.Copy(entries, 0, array, index, entries.Length); } private sealed class EntriesEnumerator : IEnumerator { private readonly EventLogEntryCollection entries; private int num = -1; private EventLogEntry? cachedEntry; internal EntriesEnumerator(EventLogEntryCollection entries) { this.entries = entries; } public object Current { get { if (cachedEntry == null) throw new InvalidOperationException(SR.NoCurrentEntry); return cachedEntry; } } public bool MoveNext() { num++; cachedEntry = entries.GetEntryAtNoThrow(num); return cachedEntry != null; } public void Reset() { num = -1; } } } }