You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| #region Using directives
 | |
| 
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using System.DirectoryServices;
 | |
| 
 | |
| #endregion
 | |
| 
 | |
| namespace System.Workflow.Activities
 | |
| {
 | |
|     [Serializable]
 | |
|     sealed internal class DirectoryLocalQuery : IDirectoryOperation
 | |
|     {
 | |
|         internal String m_name;
 | |
|         internal String m_value;
 | |
|         internal DirectoryQueryOperation m_operation;
 | |
| 
 | |
|         public DirectoryLocalQuery(String name, String value, DirectoryQueryOperation operation)
 | |
|         {
 | |
|             if (name == null)
 | |
|                 throw new ArgumentNullException("name");
 | |
|             if (value == null)
 | |
|                 throw new ArgumentNullException("value");
 | |
| 
 | |
|             this.m_name = name;
 | |
|             this.m_value = value;
 | |
|             this.m_operation = operation;
 | |
|         }
 | |
| 
 | |
|         public void GetResult(DirectoryEntry rootEntry, DirectoryEntry currentEntry, List<DirectoryEntry> response)
 | |
|         {
 | |
|             if (rootEntry == null)
 | |
|                 throw new ArgumentNullException("rootEntry");
 | |
|             if (currentEntry == null)
 | |
|                 throw new ArgumentNullException("currentEntry");
 | |
|             if (response == null)
 | |
|                 throw new ArgumentNullException("response");
 | |
| 
 | |
|             using (DirectorySearcher searcher = new DirectorySearcher(currentEntry))
 | |
|             {
 | |
|                 String strStart = "(";
 | |
|                 String strOperation = "";
 | |
|                 String strEnd = ")";
 | |
| 
 | |
|                 switch (this.m_operation)
 | |
|                 {
 | |
|                     case DirectoryQueryOperation.Equal:
 | |
|                         strOperation = "=";
 | |
|                         break;
 | |
| 
 | |
|                     case DirectoryQueryOperation.NotEqual:
 | |
|                         strStart = "(!(";
 | |
|                         strOperation = "=";
 | |
|                         strEnd = "))";
 | |
|                         break;
 | |
| 
 | |
|                     default:
 | |
|                         System.Diagnostics.Debug.Assert(false);
 | |
|                         break;
 | |
|                 }
 | |
| 
 | |
|                 searcher.Filter = strStart + this.m_name + strOperation + this.m_value + strEnd;
 | |
| 
 | |
|                 foreach (SearchResult result in searcher.FindAll())
 | |
|                 {
 | |
|                     response.Add(result.GetDirectoryEntry());
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 |