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); }
// 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(); } }