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
- ImpersonateTokenRef.cs
- CanExecuteRoutedEventArgs.cs
- DefaultEventAttribute.cs
- SelectionEditor.cs
- RawStylusInputCustomData.cs
- UnionExpr.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- UnsafeNativeMethods.cs
- ViewStateException.cs
- ConstraintEnumerator.cs
- ConditionCollection.cs
- ModelFunction.cs
- TypeKeyValue.cs
- SBCSCodePageEncoding.cs
- StringDictionary.cs
- ConfigurationConverterBase.cs
- ModelVisual3D.cs
- CalendarDesigner.cs
- RuntimeHelpers.cs
- SegmentInfo.cs
- KeyValueSerializer.cs
- NavigationPropertyAccessor.cs
- LockCookie.cs
- RoleGroup.cs
- HtmlSelect.cs
- SystemIcons.cs
- MediaEntryAttribute.cs
- WmiPutTraceRecord.cs
- XsdBuildProvider.cs
- DesigntimeLicenseContext.cs
- DynamicUpdateCommand.cs
- XAMLParseException.cs
- DocumentApplicationJournalEntry.cs
- DecoratedNameAttribute.cs
- Debug.cs
- FrameworkElementAutomationPeer.cs
- CharEntityEncoderFallback.cs
- FrameworkTemplate.cs
- AttributeParameterInfo.cs
- DoWhile.cs
- EntityTransaction.cs
- DataServiceException.cs
- EntityCommand.cs
- DrawingImage.cs
- CompilerCollection.cs
- TTSVoice.cs
- CopyAction.cs
- StrongNameUtility.cs
- SolidColorBrush.cs
- CollectionView.cs
- XmlComment.cs
- SmtpNetworkElement.cs
- Clipboard.cs
- XamlLoadErrorInfo.cs
- TypeDelegator.cs
- NativeMethods.cs
- FixedPageStructure.cs
- OpenFileDialog.cs
- ListMarkerSourceInfo.cs
- DataServiceCollectionOfT.cs
- COM2IProvidePropertyBuilderHandler.cs
- TypedColumnHandler.cs
- MsmqReceiveParameters.cs
- RegisteredExpandoAttribute.cs
- TdsParserSessionPool.cs
- BulletedListEventArgs.cs
- TiffBitmapDecoder.cs
- ResXResourceReader.cs
- IMembershipProvider.cs
- XmlSchemaSubstitutionGroup.cs
- Mapping.cs
- ProfileSettingsCollection.cs
- CriticalHandle.cs
- FlowDocumentView.cs
- PropertyEmitter.cs
- WebPartConnectionsCancelEventArgs.cs
- ShimAsPublicXamlType.cs
- RegionIterator.cs
- FontUnit.cs
- BaseCodePageEncoding.cs
- OleDbSchemaGuid.cs
- MessageContractAttribute.cs
- UmAlQuraCalendar.cs
- TraceData.cs
- TransformProviderWrapper.cs
- GlobalProxySelection.cs
- Unit.cs
- COAUTHIDENTITY.cs
- Italic.cs
- InstanceBehavior.cs
- RepeaterCommandEventArgs.cs
- ToolStripTextBox.cs
- PageSetupDialog.cs
- AssemblySettingAttributes.cs
- DecoratedNameAttribute.cs
- MemberHolder.cs
- FileUtil.cs
- RtfControls.cs
- AssemblyBuilderData.cs
- ComAwareEventInfo.cs