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
- LocatorPartList.cs
- shaper.cs
- LineServicesRun.cs
- IsolatedStorageFileStream.cs
- IdentifierService.cs
- SaveWorkflowAsyncResult.cs
- ErrorRuntimeConfig.cs
- SchemaImporterExtension.cs
- ColumnTypeConverter.cs
- OutputWindow.cs
- FreezableCollection.cs
- NamespaceCollection.cs
- UserControlCodeDomTreeGenerator.cs
- XmlSchemaAny.cs
- Converter.cs
- WebPartActionVerb.cs
- Pts.cs
- StandardCommandToolStripMenuItem.cs
- TreeBuilder.cs
- JapaneseCalendar.cs
- ListViewItemSelectionChangedEvent.cs
- ProtocolsConfiguration.cs
- IdentityElement.cs
- BulletDecorator.cs
- DataGridViewRowPostPaintEventArgs.cs
- MediaCommands.cs
- DelegateTypeInfo.cs
- MachineKeyValidationConverter.cs
- DateTimeFormatInfoScanner.cs
- AppSettingsExpressionBuilder.cs
- TextInfo.cs
- QilList.cs
- connectionpool.cs
- DiagnosticTrace.cs
- CodeCatchClauseCollection.cs
- MappingItemCollection.cs
- HttpPostedFile.cs
- XslNumber.cs
- MessageQueueException.cs
- X509CertificateStore.cs
- ModuleElement.cs
- SystemUnicastIPAddressInformation.cs
- ClockController.cs
- RadioButtonStandardAdapter.cs
- ConfigurationManagerInternalFactory.cs
- EventTrigger.cs
- MetaData.cs
- Gdiplus.cs
- MsmqBindingFilter.cs
- QuadraticBezierSegment.cs
- XmlToDatasetMap.cs
- AutomationTextAttribute.cs
- ScrollViewerAutomationPeer.cs
- ConfigurationStrings.cs
- CanonicalXml.cs
- Exceptions.cs
- AmbientValueAttribute.cs
- HwndTarget.cs
- MissingSatelliteAssemblyException.cs
- SecurityKeyUsage.cs
- SchemaCollectionCompiler.cs
- RegexCompiler.cs
- Annotation.cs
- UrlRoutingHandler.cs
- ConfigXmlSignificantWhitespace.cs
- DetailsViewRow.cs
- SessionStateModule.cs
- PageWrapper.cs
- GifBitmapEncoder.cs
- Vector3dCollection.cs
- ObjectToIdCache.cs
- StrokeRenderer.cs
- Thumb.cs
- LineBreak.cs
- WebPartCloseVerb.cs
- Properties.cs
- TreeView.cs
- WindowManager.cs
- CapabilitiesAssignment.cs
- CalloutQueueItem.cs
- SchemaTableColumn.cs
- HitTestWithPointDrawingContextWalker.cs
- XmlSchemaValidator.cs
- MethodRental.cs
- SingleAnimationUsingKeyFrames.cs
- ScriptBehaviorDescriptor.cs
- XPathNode.cs
- XmlComplianceUtil.cs
- SizeValueSerializer.cs
- SortedList.cs
- WebPartEditorCancelVerb.cs
- Point3DValueSerializer.cs
- SrgsNameValueTag.cs
- ShutDownListener.cs
- MsmqMessage.cs
- CustomErrorsSectionWrapper.cs
- SrgsElement.cs
- HttpRequestWrapper.cs
- TransactionChannelListener.cs
- KnownTypesProvider.cs