private static bool SearchAllFilterTypes(PSWorkflowJob job, WorkflowFilterTypes type, string key, out object value) { PSWorkflowContext metadata = job.PSWorkflowInstance.PSWorkflowContext; value = null; if (metadata == null) return false; var searchTable = new Dictionary<WorkflowFilterTypes, Dictionary<string, object>> { {WorkflowFilterTypes.WorkflowSpecificParameters, metadata.WorkflowParameters}, {WorkflowFilterTypes.JobMetadata, metadata.JobMetadata}, {WorkflowFilterTypes.CommonParameters, metadata.PSWorkflowCommonParameters}, {WorkflowFilterTypes.PrivateMetadata, metadata.PrivateMetadata} }; foreach(var filter in searchTable.Keys) { object searchResult; if (!type.HasFlag(filter) || !SearchOneFilterType(searchTable[filter], key, out searchResult)) continue; value = searchResult; return true; } return false; }
private static bool SearchAllFilterTypes(PSWorkflowJob job, WorkflowFilterTypes type, string key, out object value) { object obj = null; bool flag; PSWorkflowContext pSWorkflowContext = job.PSWorkflowInstance.PSWorkflowContext; value = null; if (pSWorkflowContext != null) { Dictionary<WorkflowFilterTypes, Dictionary<string, object>> workflowFilterTypes = new Dictionary<WorkflowFilterTypes, Dictionary<string, object>>(); workflowFilterTypes.Add(WorkflowFilterTypes.WorkflowSpecificParameters, pSWorkflowContext.WorkflowParameters); workflowFilterTypes.Add(WorkflowFilterTypes.JobMetadata, pSWorkflowContext.JobMetadata); workflowFilterTypes.Add(WorkflowFilterTypes.CommonParameters, pSWorkflowContext.PSWorkflowCommonParameters); workflowFilterTypes.Add(WorkflowFilterTypes.PrivateMetadata, pSWorkflowContext.PrivateMetadata); Dictionary<WorkflowFilterTypes, Dictionary<string, object>> workflowFilterTypes1 = workflowFilterTypes; Dictionary<WorkflowFilterTypes, Dictionary<string, object>>.KeyCollection.Enumerator enumerator = workflowFilterTypes1.Keys.GetEnumerator(); try { while (enumerator.MoveNext()) { WorkflowFilterTypes current = enumerator.Current; if (!type.HasFlag(current) || !PSWorkflowJobManager.SearchOneFilterType(workflowFilterTypes1[current], key, out obj)) { continue; } value = obj; flag = true; return flag; } return false; } finally { enumerator.Dispose(); } return flag; } else { return false; } }