Exemple #1
0
        private string GetSourceCode(object method)
        {
            TextFormatter formatter = new TextFormatter();
            ILanguage     language  = this.languageManager.ActiveLanguage;

            if ((language != null) && (formatter != null))
            {
                LanguageWriterConfiguration configuration = new LanguageWriterConfiguration();
                configuration.Visibility = this.visibilityConfiguration;
                ILanguageWriter writer = language.GetWriter(formatter, configuration);
                if (writer != null)
                {
                    try
                    {
                        IMethodDeclaration md = null;
                        if (language.Translate)
                        {
                            ITranslator translator = this.translatorManager.CreateDisassembler();
                            if (translator != null)
                            {
                                md = translator.TranslateMethodDeclaration((IMethodDeclaration)method);
                            }
                        }
                        else
                        {
                            md = (IMethodDeclaration)method;
                        }

                        writer.WriteMethodDeclaration(md);

                        return(formatter.ToString());
                    }
                    catch (Exception ex)
                    {
                        string sEx = ex.ToString();
                    }
                }
            }
            return(null);
        }
Exemple #2
0
        // get the original text from the LanguageWriter
        private string GetItemAsString(object item, int indent)
        {
            TextFormatter   formatter = new TextFormatter();
            ILanguageWriter writer    = _language.GetWriter(formatter, _configuration);

            for (int i = 0; i < indent; i++)
            {
                formatter.WriteIndent();
            }

            if (item is INamespace)
            {
                writer.WriteNamespace(item as INamespace);
            }
            if (item is ITypeDeclaration)
            {
                writer.WriteTypeDeclaration(item as ITypeDeclaration);
            }
            if (item is IEventDeclaration)
            {
                writer.WriteEventDeclaration(item as IEventDeclaration);
            }
            if (item is IFieldDeclaration)
            {
                writer.WriteFieldDeclaration(item as IFieldDeclaration);
            }
            if (item is IMethodDeclaration)
            {
                writer.WriteMethodDeclaration(item as IMethodDeclaration);
            }
            if (item is IPropertyDeclaration)
            {
                writer.WritePropertyDeclaration(item as IPropertyDeclaration);
            }

            return(formatter.ToString());
        }
        public string Decompile(int languageIndex, object o)
        {
            if (o == null)
            {
                return(String.Empty);
            }

            IFormatter      formatter  = CreateFormatter(this.LanguageManager.Languages[languageIndex].Name);
            ILanguageWriter writer     = this.LanguageManager.Languages[languageIndex].GetWriter(formatter, _langurageWriterConfiguration);
            ITranslator     translator = this.TranslatorManager.CreateDisassembler(null, null);

            if (o is IMethodDeclaration)
            {
                IMethodDeclaration m2;
                if (IsIL(languageIndex))
                {
                    m2 = (IMethodDeclaration)o;
                }
                else
                {
                    m2 = translator.TranslateMethodDeclaration((IMethodDeclaration)o);
                }
                writer.WriteMethodDeclaration(m2);
            }
            else if (o is IPropertyDeclaration)
            {
                IPropertyDeclaration p2 = translator.TranslatePropertyDeclaration((IPropertyDeclaration)o);
                writer.WritePropertyDeclaration(p2);
            }
            else if (o is IFieldDeclaration)
            {
                IFieldDeclaration f2 = translator.TranslateFieldDeclaration((IFieldDeclaration)o);
                writer.WriteFieldDeclaration(f2);
            }
            else if (o is ITypeDeclaration)
            {
                ITypeDeclaration t2 = translator.TranslateTypeDeclaration((ITypeDeclaration)o, true, false);
                writer.WriteTypeDeclaration(t2);
            }
            else if (o is IEventDeclaration)
            {
                IEventDeclaration e2 = translator.TranslateEventDeclaration((IEventDeclaration)o);
                writer.WriteEventDeclaration(e2);
            }
            else if (o is IModule)
            {
                IModule m2 = translator.TranslateModule((IModule)o, true);
                writer.WriteModule(m2);
            }
            else if (o is IModuleReference)
            {
                IModuleReference mr2 = translator.TranslateModuleReference((IModuleReference)o);
                writer.WriteModuleReference(mr2);
            }
            else if (o is IAssembly)
            {
                IAssembly a2 = translator.TranslateAssembly((IAssembly)o, true);
                writer.WriteAssembly(a2);
            }
            else if (o is IAssemblyReference)
            {
                IAssemblyReference ar2 = translator.TranslateAssemblyReference((IAssemblyReference)o);
                writer.WriteAssemblyReference(ar2);
            }
            else if (o is IResource)
            {
                writer.WriteResource((IResource)o);
            }
            else if (o is INamespace)
            {
                writer.WriteNamespace((INamespace)o);
            }

            return(formatter.ToString());
        }
        private void Translate()
        {
            if (this.Parent != null)
            {
                RichTextFormatter formatter = new RichTextFormatter();

                ILanguage language = this.languageManager.ActiveLanguage;

                LanguageWriterConfiguration configuration = new LanguageWriterConfiguration();
                configuration.Visibility = this.visibilityConfiguration;
                configuration["ShowCustomAttributes"]      = "true";
                configuration["ShowNamespaceImports"]      = "true";
                configuration["ShowNamespaceBody"]         = "true";
                configuration["ShowTypeDeclarationBody"]   = "true";
                configuration["ShowMethodDeclarationBody"] = "false";

                ILanguageWriter writer = language.GetWriter(formatter, configuration);

                object value = this.assemblyBrowser.ActiveItem;

                ITypeDeclaration typeDeclaration = value as ITypeDeclaration;
                if (typeDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "false";

                    if (language.Translate)
                    {
                        typeDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateTypeDeclaration(typeDeclaration, true, false);
                    }

                    writer.WriteTypeDeclaration(typeDeclaration);
                }

                IFieldDeclaration fieldDeclaration = value as IFieldDeclaration;
                if (fieldDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        fieldDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateFieldDeclaration(fieldDeclaration);
                    }

                    writer.WriteFieldDeclaration(fieldDeclaration);
                }

                IMethodDeclaration methodDeclaration = value as IMethodDeclaration;
                if (methodDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        methodDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateMethodDeclaration(methodDeclaration);
                    }

                    writer.WriteMethodDeclaration(methodDeclaration);
                }

                IPropertyDeclaration propertyDeclaration = value as IPropertyDeclaration;
                if (propertyDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        propertyDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslatePropertyDeclaration(propertyDeclaration);
                    }

                    writer.WritePropertyDeclaration(propertyDeclaration);
                }

                IEventDeclaration eventDeclaration = value as IEventDeclaration;
                if (eventDeclaration != null)
                {
                    configuration["ShowMethodDeclarationBody"] = "true";

                    if (language.Translate)
                    {
                        eventDeclaration = this.translatorManager.CreateDisassembler(null, null).TranslateEventDeclaration(eventDeclaration);
                    }

                    writer.WriteEventDeclaration(eventDeclaration);
                }

                this.Rtf = formatter.ToString();
            }
        }