public DecompileType ( Mono.Cecil.TypeDefinition type, ITextOutput output, |
||
type | Mono.Cecil.TypeDefinition | |
output | ITextOutput | |
options | ||
Результат | void |
public string Decompile(object @object) { if (@object == null) return String.Empty; Language l = new CSharpLanguage(); ITextOutput output = new RtfTextOutput(); var options = new DecompilationOptions(); if (@object is AssemblyDefinition) l.DecompileAssembly((AssemblyDefinition)@object, output, options); else if (@object is TypeDefinition) l.DecompileType((TypeDefinition)@object, output, options); else if (@object is MethodDefinition) l.DecompileMethod((MethodDefinition)@object, output, options); else if (@object is FieldDefinition) l.DecompileField((FieldDefinition)@object, output, options); else if (@object is PropertyDefinition) l.DecompileProperty((PropertyDefinition)@object, output, options); else if (@object is EventDefinition) l.DecompileEvent((EventDefinition)@object, output, options); else if (@object is AssemblyNameReference) { output.Write("// Assembly Reference "); output.WriteDefinition(@object.ToString(), null); output.WriteLine(); } else if(@object is ModuleReference) { output.Write("// Module Reference "); output.WriteDefinition(@object.ToString(), null); output.WriteLine(); } else { output.Write(String.Format("// {0} ", @object.GetType().Name)); output.WriteDefinition(@object.ToString(), null); output.WriteLine(); } return output.ToString(); }
public string getSourceCode(TypeDefinition typeDefinition) { try { var csharpLanguage = new CSharpLanguage(); var textOutput = new PlainTextOutput(); var decompilationOptions = new DecompilationOptions(); decompilationOptions.FullDecompilation = true; csharpLanguage.DecompileType(typeDefinition, textOutput, decompilationOptions); return textOutput.ToString(); } catch (Exception exception) { PublicDI.log.error("in getSourceCode: {0}", new object[] { exception.Message }); return ("Error in creating source code from Type: " + exception.Message); } }