コード例 #1
0
 void DoDisassemble(IDnlibDef item, ITextOutput output, ReflectionDisassembler disassembler)
 {
     if (item is ModuleDef)
     {
         var module = (ModuleDef)item;
         disassembler.WriteAssemblyReferences(module);
         if (module.Assembly != null)
         {
             disassembler.WriteAssemblyHeader(module.Assembly);
         }
         output.WriteLine();
         disassembler.WriteModuleHeader(module);
     }
     else if (item is TypeDef)
     {
         disassembler.DisassembleType((TypeDef)item);
     }
     else if (item is MethodDef)
     {
         disassembler.DisassembleMethod((MethodDef)item);
     }
     else if (item is FieldDef)
     {
         disassembler.DisassembleField((FieldDef)item);
     }
     else if (item is PropertyDef)
     {
         disassembler.DisassembleProperty((PropertyDef)item);
     }
     else if (item is EventDef)
     {
         disassembler.DisassembleEvent((EventDef)item);
     }
 }
コード例 #2
0
        public override void DecompileField(FieldDefinition field, ITextOutput output, DecompilationOptions options)
        {
            var dis = new ReflectionDisassembler(output, detectControlStructure, options.CancellationToken);

            dis.DisassembleField(field);
            NotifyDecompilationFinished(dis);
        }
コード例 #3
0
        public static string Disassemble <T>(this T member)
            where T : class, IMemberDefinition
        {
            var writer = new PlainTextOutput();
            var dasm   = new ReflectionDisassembler(writer);

            if (typeof(T) == typeof(EventDefinition))
            {
                dasm.DisassembleEvent(member as EventDefinition);
            }
            else if (typeof(T) == typeof(FieldDefinition))
            {
                dasm.DisassembleField(member as FieldDefinition);
            }
            else if (typeof(T) == typeof(PropertyDefinition))
            {
                dasm.DisassembleProperty(member as PropertyDefinition);
            }
            else if (typeof(T) == typeof(MethodDefinition))
            {
                dasm.DisassembleMethod(member as MethodDefinition);
            }
            else if (typeof(T) == typeof(TypeDefinition))
            {
                dasm.DisassembleType(member as TypeDefinition);
            }
            else
            {
                throw new NotImplementedException($"the type {typeof(T).FullName} cannot be disassembled.");
            }

            return(writer.ToString());
        }
コード例 #4
0
ファイル: CILLanguage.cs プロジェクト: mamingxiu/dnExplorer
		void DoDisassemble(IDnlibDef item, ITextOutput output, ReflectionDisassembler disassembler) {
			if (item is ModuleDef) {
				var module = (ModuleDef)item;
				disassembler.WriteAssemblyReferences(module);
				if (module.Assembly != null)
					disassembler.WriteAssemblyHeader(module.Assembly);
				output.WriteLine();
				disassembler.WriteModuleHeader(module);
			}
			else if (item is TypeDef) {
				disassembler.DisassembleType((TypeDef)item);
			}
			else if (item is MethodDef) {
				disassembler.DisassembleMethod((MethodDef)item);
			}
			else if (item is FieldDef) {
				disassembler.DisassembleField((FieldDef)item);
			}
			else if (item is PropertyDef) {
				disassembler.DisassembleProperty((PropertyDef)item);
			}
			else if (item is EventDef) {
				disassembler.DisassembleEvent((EventDef)item);
			}
		}
コード例 #5
0
ファイル: Illness.cs プロジェクト: nasser/illness
        public static string ToMSIL(FieldDefinition fieldDefinition)
        {
            var output       = new StringWriter();
            var disassembler = new ReflectionDisassembler(new PlainTextOutput(output), false, new CancellationToken());

            disassembler.DisassembleField(fieldDefinition);
            return(output.ToString());
        }
コード例 #6
0
		public override void DecompileField(FieldDefinition field, ITextOutput output, DecompilationOptions options)
		{
			var dis = new ReflectionDisassembler(output, detectControlStructure, options.CancellationToken);
			dis.DisassembleField(field);
		}