| File: System\DirectoryServices\AccountManagement\FindResult.cs | Web Access |
| Project: src\runtime\src\libraries\System.DirectoryServices.AccountManagement\src\System.DirectoryServices.AccountManagement.csproj (System.DirectoryServices.AccountManagement) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; namespace System.DirectoryServices.AccountManagement { public class PrincipalSearchResult<T> : IEnumerable<T>, IEnumerable, IDisposable { // // Public methods // public IEnumerator<T> GetEnumerator() { GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearchResult", "Entering GetEnumerator"); CheckDisposed(); return new FindResultEnumerator<T>(_resultSet); } IEnumerator IEnumerable.GetEnumerator() { return (IEnumerator)GetEnumerator(); } public void Dispose() { if (!_disposed) { GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearchResult", "Dispose: disposing"); if (_resultSet != null) { GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearchResult", "Dispose: disposing resultSet"); lock (_resultSet) { _resultSet.Dispose(); } } _disposed = true; GC.SuppressFinalize(this); } } // // Internal Constructors // // Note that resultSet can be null internal PrincipalSearchResult(ResultSet resultSet) { GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearchResult", "Ctor"); _resultSet = resultSet; } // // Private Implementation // // // SYNCHRONIZATION // Access to: // resultSet // must be synchronized, since multiple enumerators could be iterating over us at once. // Synchronize by locking on resultSet (if resultSet is non-null). // The ResultSet returned by the query. private readonly ResultSet _resultSet; private bool _disposed; private void CheckDisposed() { if (_disposed) { GlobalDebug.WriteLineIf(GlobalDebug.Warn, "PrincipalSearchResult", "CheckDisposed: accessing disposed object"); throw new ObjectDisposedException("PrincipalSearchResult"); } } } }