Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Role / DirectoryGroupQuery.cs / 1305376 / DirectoryGroupQuery.cs
#region Using directives using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Net; using System.DirectoryServices; #endregion namespace System.Workflow.Activities { [Serializable] sealed internal class DirectoryGroupQuery : IDirectoryOperation { public DirectoryGroupQuery() { } public void GetResult(DirectoryEntry rootEntry, DirectoryEntry currentEntry, Listresponse) { if (response == null) throw new ArgumentNullException("response"); Stack entries = new Stack (); entries.Push(currentEntry); while (entries.Count != 0) { DirectoryEntry entry = entries.Pop(); bool isGroup = false; if (Contains(entry.Properties.PropertyNames,"objectClass")) { foreach (String value in entry.Properties["objectClass"]) { if (String.Compare(value, ActiveDirectoryRoleFactory.Configuration.Group, StringComparison.Ordinal) == 0) { isGroup = true; break; } } if (isGroup) { if (Contains(entry.Properties.PropertyNames, ActiveDirectoryRoleFactory.Configuration.Member)) { foreach (String propValue in entry.Properties[ActiveDirectoryRoleFactory.Configuration.Member]) { entries.Push(new DirectoryEntry(BuildUri(propValue))); } } } else { response.Add(entry); } } } } private static bool Contains(ICollection propertyNames, String testPropertyName) { foreach (String propertyName in propertyNames) { if (String.Compare(propertyName, testPropertyName, StringComparison.Ordinal) == 0) return true; } return false; } private static String BuildUri(String propValue) { StringBuilder sb = new StringBuilder(); sb.Append("LDAP://"); for (int i = 0; i < propValue.Length; ++i) { if (propValue[i] == '/') sb.Append("\\/"); else sb.Append(propValue[i]); } return sb.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. #region Using directives using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Net; using System.DirectoryServices; #endregion namespace System.Workflow.Activities { [Serializable] sealed internal class DirectoryGroupQuery : IDirectoryOperation { public DirectoryGroupQuery() { } public void GetResult(DirectoryEntry rootEntry, DirectoryEntry currentEntry, List response) { if (response == null) throw new ArgumentNullException("response"); Stack entries = new Stack (); entries.Push(currentEntry); while (entries.Count != 0) { DirectoryEntry entry = entries.Pop(); bool isGroup = false; if (Contains(entry.Properties.PropertyNames,"objectClass")) { foreach (String value in entry.Properties["objectClass"]) { if (String.Compare(value, ActiveDirectoryRoleFactory.Configuration.Group, StringComparison.Ordinal) == 0) { isGroup = true; break; } } if (isGroup) { if (Contains(entry.Properties.PropertyNames, ActiveDirectoryRoleFactory.Configuration.Member)) { foreach (String propValue in entry.Properties[ActiveDirectoryRoleFactory.Configuration.Member]) { entries.Push(new DirectoryEntry(BuildUri(propValue))); } } } else { response.Add(entry); } } } } private static bool Contains(ICollection propertyNames, String testPropertyName) { foreach (String propertyName in propertyNames) { if (String.Compare(propertyName, testPropertyName, StringComparison.Ordinal) == 0) return true; } return false; } private static String BuildUri(String propValue) { StringBuilder sb = new StringBuilder(); sb.Append("LDAP://"); for (int i = 0; i < propValue.Length; ++i) { if (propValue[i] == '/') sb.Append("\\/"); else sb.Append(propValue[i]); } return sb.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TrustLevelCollection.cs
- ObjectListDataBindEventArgs.cs
- FlowDocumentPageViewerAutomationPeer.cs
- LayoutEngine.cs
- LinqTreeNodeEvaluator.cs
- HostTimeoutsElement.cs
- MessageProperties.cs
- ActivityScheduledQuery.cs
- Transactions.cs
- PathSegmentCollection.cs
- DataPager.cs
- SqlCacheDependencyDatabase.cs
- SqlConnectionPoolGroupProviderInfo.cs
- IsolationInterop.cs
- GlobalizationAssembly.cs
- StringAnimationBase.cs
- PersonalizationAdministration.cs
- _SafeNetHandles.cs
- ByteAnimation.cs
- ResolveMatchesCD1.cs
- MexBindingElement.cs
- HttpClientCertificate.cs
- HtmlToClrEventProxy.cs
- System.Data_BID.cs
- TrackingConditionCollection.cs
- Page.cs
- CTreeGenerator.cs
- PaperSource.cs
- Utilities.cs
- CatalogZoneBase.cs
- HttpHandlerActionCollection.cs
- ValueSerializer.cs
- ZipIORawDataFileBlock.cs
- PropertyInformationCollection.cs
- UiaCoreTypesApi.cs
- HttpWriter.cs
- NameValueFileSectionHandler.cs
- MachineKeyConverter.cs
- UnderstoodHeaders.cs
- UserNameSecurityTokenProvider.cs
- SerialStream.cs
- DSGeneratorProblem.cs
- EncryptedPackageFilter.cs
- CodeDelegateCreateExpression.cs
- HtmlInputControl.cs
- NTAccount.cs
- ToolTipAutomationPeer.cs
- ThemeDirectoryCompiler.cs
- ColorMatrix.cs
- XPathNodeHelper.cs
- FrameworkRichTextComposition.cs
- InvalidAsynchronousStateException.cs
- SqlDataSourceQueryEditor.cs
- ReliableMessagingHelpers.cs
- DesignerForm.cs
- SQLBinary.cs
- ProcessingInstructionAction.cs
- Clock.cs
- InkPresenter.cs
- SmtpFailedRecipientException.cs
- XPathScanner.cs
- CryptoApi.cs
- InvokeMethodActivity.cs
- RegistryKey.cs
- SessionStateItemCollection.cs
- MultiView.cs
- SpeakInfo.cs
- StorageEndPropertyMapping.cs
- Knowncolors.cs
- Rectangle.cs
- HotSpotCollection.cs
- AddressAlreadyInUseException.cs
- NominalTypeEliminator.cs
- FlowNode.cs
- UnauthorizedAccessException.cs
- XmlElementAttribute.cs
- BmpBitmapDecoder.cs
- EventProvider.cs
- ToolStripDropDownClosingEventArgs.cs
- WebRequestModuleElementCollection.cs
- ListItemConverter.cs
- NativeMethodsCLR.cs
- FileDialogCustomPlace.cs
- CertificateManager.cs
- HttpBindingExtension.cs
- PolyLineSegment.cs
- ScheduleChanges.cs
- BoolLiteral.cs
- LinkConverter.cs
- ChangeNode.cs
- Directory.cs
- PageRanges.cs
- PriorityQueue.cs
- ConfigXmlWhitespace.cs
- Vector3DAnimationBase.cs
- prefixendpointaddressmessagefilter.cs
- MarginCollapsingState.cs
- StickyNoteHelper.cs
- BookmarkOptionsHelper.cs
- ObjectDataSourceMethodEventArgs.cs