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
- LoadGrammarCompletedEventArgs.cs
- BamlVersionHeader.cs
- Style.cs
- HwndSource.cs
- ResourceExpression.cs
- CodeAssignStatement.cs
- CalendarButtonAutomationPeer.cs
- ToolStripButton.cs
- MetadataFile.cs
- SafeFreeMibTable.cs
- BufferedGraphicsContext.cs
- TextEditorTables.cs
- WebHostScriptMappingsInstallComponent.cs
- EntityCommandDefinition.cs
- BaseResourcesBuildProvider.cs
- ContentTextAutomationPeer.cs
- Invariant.cs
- Guid.cs
- OrderedParallelQuery.cs
- UnlockInstanceAsyncResult.cs
- TextElementCollectionHelper.cs
- Version.cs
- DateTime.cs
- ColumnCollection.cs
- EntityDataSourceContextDisposingEventArgs.cs
- CurrencyWrapper.cs
- MarkupWriter.cs
- InitializerFacet.cs
- NetworkInformationPermission.cs
- GlyphingCache.cs
- DataControlFieldCollection.cs
- TextServicesCompartmentEventSink.cs
- DbModificationCommandTree.cs
- DataColumnMappingCollection.cs
- TemplateEditingFrame.cs
- PropertyGridEditorPart.cs
- MetadataArtifactLoader.cs
- StylusEditingBehavior.cs
- Transform3D.cs
- XPathArrayIterator.cs
- NullableDoubleMinMaxAggregationOperator.cs
- TrackingRecord.cs
- GuidTagList.cs
- InputLanguageEventArgs.cs
- TableLayoutCellPaintEventArgs.cs
- _StreamFramer.cs
- InputLanguageEventArgs.cs
- Highlights.cs
- AssemblyName.cs
- ToolStripDropTargetManager.cs
- SetStateDesigner.cs
- ProtectedConfiguration.cs
- AssociationSet.cs
- ConnectionManagementSection.cs
- UpdateTranslator.cs
- XmlSequenceWriter.cs
- SafeViewOfFileHandle.cs
- BidOverLoads.cs
- EntityDataSourceChangedEventArgs.cs
- GeometryHitTestParameters.cs
- TypeConstant.cs
- TextEditorSelection.cs
- ConfigurationSettings.cs
- GridView.cs
- EdmValidator.cs
- ControlIdConverter.cs
- WebServiceResponse.cs
- GetMemberBinder.cs
- VerticalConnector.xaml.cs
- CodeTypeParameter.cs
- sortedlist.cs
- IOThreadScheduler.cs
- Array.cs
- FontDriver.cs
- WebBrowserUriTypeConverter.cs
- RequestCachingSection.cs
- DataGridCommandEventArgs.cs
- TypeUtils.cs
- hebrewshape.cs
- Privilege.cs
- Vector3DCollectionValueSerializer.cs
- InvalidDataException.cs
- NotifyCollectionChangedEventArgs.cs
- ScaleTransform3D.cs
- RemotingConfigParser.cs
- WinFormsSecurity.cs
- OdbcDataAdapter.cs
- ValueTable.cs
- SapiRecoContext.cs
- StopStoryboard.cs
- MenuStrip.cs
- AsyncStreamReader.cs
- DecimalKeyFrameCollection.cs
- TypeConverterMarkupExtension.cs
- SelectionItemPattern.cs
- Imaging.cs
- documentsequencetextcontainer.cs
- SiteMap.cs
- XamlTypeMapperSchemaContext.cs
- BinaryCommonClasses.cs