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
- WindowsListView.cs
- NativeMethods.cs
- ProxyFragment.cs
- BitmapMetadataEnumerator.cs
- WindowsEditBox.cs
- BamlLocalizationDictionary.cs
- TextParagraphView.cs
- AgileSafeNativeMemoryHandle.cs
- NativeMethods.cs
- Debug.cs
- HideDisabledControlAdapter.cs
- KnownIds.cs
- MarginCollapsingState.cs
- AdornerHitTestResult.cs
- PingReply.cs
- ConvertEvent.cs
- PeerApplicationLaunchInfo.cs
- Visual3D.cs
- CodeCatchClause.cs
- SmtpException.cs
- Point4D.cs
- BamlRecords.cs
- ChannelDispatcher.cs
- CacheAxisQuery.cs
- EdmType.cs
- DataBindEngine.cs
- CapabilitiesSection.cs
- SharedConnectionWorkflowTransactionService.cs
- ScrollItemPattern.cs
- CodeCommentStatementCollection.cs
- XPathDocumentNavigator.cs
- SqlRemoveConstantOrderBy.cs
- Triplet.cs
- StrokeCollectionConverter.cs
- ApplicationServicesHostFactory.cs
- DataGridItemCollection.cs
- Timer.cs
- RayMeshGeometry3DHitTestResult.cs
- TraceListener.cs
- FormClosedEvent.cs
- _IPv6Address.cs
- EntityContainerEmitter.cs
- XPathSingletonIterator.cs
- ReaderWriterLockWrapper.cs
- SpeakProgressEventArgs.cs
- JoinTreeNode.cs
- RequestBringIntoViewEventArgs.cs
- SubclassTypeValidator.cs
- XamlStyleSerializer.cs
- ADMembershipProvider.cs
- ComPlusAuthorization.cs
- StackSpiller.Bindings.cs
- NavigationWindow.cs
- DataExpression.cs
- PathFigureCollectionConverter.cs
- ConfigurationConverterBase.cs
- RoleBoolean.cs
- InvalidComObjectException.cs
- Comparer.cs
- ObjectNotFoundException.cs
- CfgParser.cs
- MatrixUtil.cs
- ZipFileInfo.cs
- WebPartConnectionsDisconnectVerb.cs
- InvalidDataException.cs
- XslVisitor.cs
- ColumnHeaderConverter.cs
- HttpResponseHeader.cs
- ToolStripItemCollection.cs
- HostProtectionPermission.cs
- WebPartMenuStyle.cs
- PropertyRef.cs
- WithStatement.cs
- ObjectNavigationPropertyMapping.cs
- Visual.cs
- HwndKeyboardInputProvider.cs
- CodeThrowExceptionStatement.cs
- CompositeTypefaceMetrics.cs
- SerializationFieldInfo.cs
- ArgumentNullException.cs
- DbInsertCommandTree.cs
- ImageMetadata.cs
- XmlSchemaImport.cs
- MemberHolder.cs
- IDictionary.cs
- PingReply.cs
- Stylesheet.cs
- SetterBase.cs
- DetailsViewRowCollection.cs
- printdlgexmarshaler.cs
- ResXResourceSet.cs
- ItemAutomationPeer.cs
- SelectedDatesCollection.cs
- RTLAwareMessageBox.cs
- DataGridRow.cs
- LayoutUtils.cs
- RequestCacheEntry.cs
- IndentedWriter.cs
- ObfuscateAssemblyAttribute.cs
- EnumerableCollectionView.cs