Esempio n. 1
0
 public FileDisassemblerHelper(
     SimpleReflector reflector,
     ProjectTypes projectType,
     string outputDirectory,
     WriteLineDelegate writeLineDelegate,
     SetProgressBarDelegate setProgressBarDelegate,
     IsCancelPendingDelegate isCancelPendingDelegate)
 {
     _reflector               = reflector;
     _projectType             = projectType;
     _outputDirectory         = outputDirectory;
     WriteLine               += writeLineDelegate;
     SetProgressBar          += setProgressBarDelegate;
     _isCancelPendingDelegate = isCancelPendingDelegate;
 }
		public FileDisassemblerHelper(
			SimpleReflector reflector,
            ProjectTypes projectType,
			string outputDirectory,
			WriteLineDelegate writeLineDelegate,
			SetProgressBarDelegate setProgressBarDelegate,
            IsCancelPendingDelegate isCancelPendingDelegate)
		{
            _reflector = reflector;
			_projectType = projectType;
			_outputDirectory = outputDirectory;
			WriteLine += writeLineDelegate;
			SetProgressBar += setProgressBarDelegate;
            _isCancelPendingDelegate = isCancelPendingDelegate;
		}
        public List <MethodDeclarationInfo> FindMethods(string[] files, string[] searchFors, string[] searchForTypes, IProgressBar progress, IsCancelPendingDelegate isCancelPendingDelegate)
        {
            if (files == null || files.Length == 0)
            {
                return(null);
            }

            List <MethodDeclarationInfo> list = new List <MethodDeclarationInfo>();

            for (int i = 0; i < files.Length; i++)
            {
                if (isCancelPendingDelegate != null && isCancelPendingDelegate())
                {
                    break;
                }

                list.AddRange(this.FindMethods(files[i], searchFors, searchForTypes, progress, isCancelPendingDelegate));
            }

            return(list);
        }
        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);
        }
 public List <MethodDeclarationInfo> FindMethods(string fileName, string[] searchFors, IProgressBar progress, IsCancelPendingDelegate isCancelPendingDelegate)
 {
     return(FindMethods(fileName, searchFors, null, progress, isCancelPendingDelegate));
 }