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
- XsltLoader.cs
- HandlerWithFactory.cs
- ColumnWidthChangedEvent.cs
- TextFormatterContext.cs
- ConsoleTraceListener.cs
- MenuItemBinding.cs
- ByeMessage11.cs
- DesignerAdRotatorAdapter.cs
- TextClipboardData.cs
- ClientViaElement.cs
- ExpressionBinding.cs
- FormViewModeEventArgs.cs
- ObjectReaderCompiler.cs
- SoapIgnoreAttribute.cs
- ConfigurationErrorsException.cs
- hresults.cs
- TextDecorationCollection.cs
- ObjectListShowCommandsEventArgs.cs
- CultureData.cs
- FocusChangedEventArgs.cs
- ShimAsPublicXamlType.cs
- EditorPartChrome.cs
- StylusPointDescription.cs
- PersonalizableTypeEntry.cs
- HttpRequestWrapper.cs
- ServiceBehaviorElement.cs
- EDesignUtil.cs
- Substitution.cs
- QueryOutputWriter.cs
- SqlClientPermission.cs
- CalendarSelectionChangedEventArgs.cs
- LinkTarget.cs
- XmlDataImplementation.cs
- Token.cs
- TerminatorSinks.cs
- ProgressBar.cs
- XmlNavigatorFilter.cs
- MasterPageBuildProvider.cs
- externdll.cs
- Base64Decoder.cs
- EntityDesignPluralizationHandler.cs
- CodeStatementCollection.cs
- VirtualizedCellInfoCollection.cs
- CodeSnippetExpression.cs
- TrackingServices.cs
- SystemEvents.cs
- ExpressionEditor.cs
- ReverseQueryOperator.cs
- ButtonColumn.cs
- OSFeature.cs
- WebContext.cs
- FormattedText.cs
- Listbox.cs
- EventBindingService.cs
- Dispatcher.cs
- NetworkInformationException.cs
- WebPartUtil.cs
- xamlnodes.cs
- ModelFactory.cs
- WindowsGrip.cs
- DateTimeUtil.cs
- _NestedSingleAsyncResult.cs
- SessionEndingCancelEventArgs.cs
- PropertyInformationCollection.cs
- ContentPropertyAttribute.cs
- SecurityPermission.cs
- XmlSerializer.cs
- CompoundFileStreamReference.cs
- XmlCharCheckingWriter.cs
- ResourceAssociationType.cs
- ModelPropertyImpl.cs
- FormParameter.cs
- XmlRootAttribute.cs
- MenuItemCollection.cs
- nulltextcontainer.cs
- QueryExpr.cs
- SafeProcessHandle.cs
- GridPattern.cs
- TypeBuilder.cs
- EditorBrowsableAttribute.cs
- DateTimeFormatInfoScanner.cs
- ServiceElement.cs
- ExecutedRoutedEventArgs.cs
- namescope.cs
- PenCursorManager.cs
- ChildTable.cs
- DelegateSerializationHolder.cs
- TextEditorParagraphs.cs
- SingleAnimationUsingKeyFrames.cs
- OutKeywords.cs
- ContactManager.cs
- Environment.cs
- IERequestCache.cs
- MessageDecoder.cs
- WindowsFormsSynchronizationContext.cs
- Number.cs
- SecurityContext.cs
- AnnotationHighlightLayer.cs
- RequestCachingSection.cs
- ConfigXmlSignificantWhitespace.cs