public List <MethodDeclarationInfo> FindMethods(string fileName, string[] searchFors, string[] searchForTypes, IProgressBar progress, IsCancelPendingDelegate isCancelPendingDelegate) { List <MethodDeclarationInfo> list = new List <MethodDeclarationInfo>(); IAssembly assembly = this.LoadAssembly(fileName); if (assembly == null) { list.Add(new MethodDeclarationInfo(null, String.Format("Can't load assembly: {0}", fileName))); return(list); } if (!String.IsNullOrEmpty(assembly.Status)) { list.Add(new MethodDeclarationInfo(null, String.Format("Error when loading assembly: {0} ({1})", fileName, assembly.Status))); return(list); } foreach (IModule module in assembly.Modules) { int count = 0; if (isCancelPendingDelegate != null && isCancelPendingDelegate()) { break; } if (progress != null) { progress.InitProgress(0, module.Types.Count); progress.SetProgress(0); } foreach (ITypeDeclaration typeDeclaration in module.Types) { if (isCancelPendingDelegate != null && isCancelPendingDelegate()) { break; } string typeName = typeDeclaration.Name; if (searchForTypes != null) { foreach (string searchForType in searchForTypes) { if (typeName.IndexOf(searchForType, StringComparison.OrdinalIgnoreCase) >= 0) { FindMethods(typeDeclaration, searchFors, list); break; } } } else { FindMethods(typeDeclaration, searchFors, list); } count++; if (progress != null) { progress.SetProgress(count); } } } return(list); }