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
- ScrollChangedEventArgs.cs
- SourceLineInfo.cs
- HttpStaticObjectsCollectionWrapper.cs
- SoapEnumAttribute.cs
- ModelChangedEventArgsImpl.cs
- RouteUrlExpressionBuilder.cs
- WorkItem.cs
- WhitespaceSignificantCollectionAttribute.cs
- NumberFormatInfo.cs
- Thumb.cs
- FixedBufferAttribute.cs
- CodeStatement.cs
- ConnectionConsumerAttribute.cs
- XAMLParseException.cs
- CookieProtection.cs
- HttpCachePolicy.cs
- RightsManagementUser.cs
- FileDialog.cs
- XmlSchemaComplexType.cs
- LoadMessageLogger.cs
- ToolStripSeparatorRenderEventArgs.cs
- MeshGeometry3D.cs
- DefaultProxySection.cs
- UncommonField.cs
- WriteTimeStream.cs
- PermissionAttributes.cs
- LinkTarget.cs
- ChangeDirector.cs
- NativeMethods.cs
- FormClosedEvent.cs
- DataQuery.cs
- EtwProvider.cs
- DropAnimation.xaml.cs
- AuthenticateEventArgs.cs
- FixedDSBuilder.cs
- PackWebRequestFactory.cs
- HostProtectionException.cs
- UserControlBuildProvider.cs
- RSAOAEPKeyExchangeFormatter.cs
- WebPartAddingEventArgs.cs
- PackageProperties.cs
- HtmlTableCell.cs
- KnownTypesProvider.cs
- LoadWorkflowCommand.cs
- ObjectSelectorEditor.cs
- OrderByExpression.cs
- CommandConverter.cs
- MaskedTextBox.cs
- XmlWellformedWriter.cs
- RawStylusInputReport.cs
- HtmlInputPassword.cs
- OdbcException.cs
- WpfWebRequestHelper.cs
- SiteMapPath.cs
- PersonalizationProviderCollection.cs
- TextTreeText.cs
- AdjustableArrowCap.cs
- FixedTextContainer.cs
- WebConvert.cs
- SubpageParaClient.cs
- OdbcPermission.cs
- SHA1.cs
- GlyphRunDrawing.cs
- ClientSideQueueItem.cs
- AsyncResult.cs
- SpeechDetectedEventArgs.cs
- ScaleTransform3D.cs
- BindUriHelper.cs
- JulianCalendar.cs
- ZipPackage.cs
- CryptoKeySecurity.cs
- DecoderNLS.cs
- SchemaElementDecl.cs
- FunctionQuery.cs
- MappingItemCollection.cs
- CopyCodeAction.cs
- MutableAssemblyCacheEntry.cs
- DataReaderContainer.cs
- ListItemCollection.cs
- HwndProxyElementProvider.cs
- Win32MouseDevice.cs
- RepeaterItemEventArgs.cs
- ViewStateModeByIdAttribute.cs
- WindowsIPAddress.cs
- NotSupportedException.cs
- XomlSerializationHelpers.cs
- ContextConfiguration.cs
- GenerateTemporaryTargetAssembly.cs
- AtomContentProperty.cs
- Triangle.cs
- TypeConverterHelper.cs
- InheritanceContextHelper.cs
- ContractNamespaceAttribute.cs
- ReferentialConstraintRoleElement.cs
- ResourceDictionary.cs
- Size.cs
- DbConnectionStringBuilder.cs
- UriTemplateQueryValue.cs
- WmpBitmapDecoder.cs
- ImageClickEventArgs.cs