Browse Source

Add AssemblyResolver to ReflectionDisassembler in ILLanguage

pull/1030/head
Siegfried Pammer 8 years ago
parent
commit
d94dbe3168
  1. 7
      ILSpy/Languages/ILLanguage.cs

7
ILSpy/Languages/ILLanguage.cs

@ -63,12 +63,14 @@ namespace ICSharpCode.ILSpy @@ -63,12 +63,14 @@ namespace ICSharpCode.ILSpy
public override void DecompileMethod(IMethod method, ITextOutput output, DecompilationOptions options)
{
var dis = CreateDisassembler(output, options);
dis.AssemblyResolver = method.ParentAssembly.PEFile.GetAssemblyResolver();
dis.DisassembleMethod(method.ParentAssembly.PEFile, (MethodDefinitionHandle)method.MetadataToken);
}
public override void DecompileField(IField field, ITextOutput output, DecompilationOptions options)
{
var dis = CreateDisassembler(output, options);
dis.AssemblyResolver = field.ParentAssembly.PEFile.GetAssemblyResolver();
dis.DisassembleField(field.ParentAssembly.PEFile, (FieldDefinitionHandle)field.MetadataToken);
}
@ -76,6 +78,7 @@ namespace ICSharpCode.ILSpy @@ -76,6 +78,7 @@ namespace ICSharpCode.ILSpy
{
var dis = CreateDisassembler(output, options);
PEFile module = property.ParentAssembly.PEFile;
dis.AssemblyResolver = module.GetAssemblyResolver();
dis.DisassembleProperty(module, (PropertyDefinitionHandle)property.MetadataToken);
var pd = module.Metadata.GetPropertyDefinition((PropertyDefinitionHandle)property.MetadataToken);
var accessors = pd.GetAccessors();
@ -98,6 +101,7 @@ namespace ICSharpCode.ILSpy @@ -98,6 +101,7 @@ namespace ICSharpCode.ILSpy
{
var dis = CreateDisassembler(output, options);
PEFile module = ev.ParentAssembly.PEFile;
dis.AssemblyResolver = module.GetAssemblyResolver();
dis.DisassembleEvent(module, (EventDefinitionHandle)ev.MetadataToken);
var ed = ((MetadataReader)module.Metadata).GetEventDefinition((EventDefinitionHandle)ev.MetadataToken);
@ -124,6 +128,7 @@ namespace ICSharpCode.ILSpy @@ -124,6 +128,7 @@ namespace ICSharpCode.ILSpy
{
var dis = CreateDisassembler(output, options);
PEFile module = type.ParentAssembly.PEFile;
dis.AssemblyResolver = module.GetAssemblyResolver();
dis.DisassembleType(module, (TypeDefinitionHandle)type.MetadataToken);
}
@ -131,6 +136,7 @@ namespace ICSharpCode.ILSpy @@ -131,6 +136,7 @@ namespace ICSharpCode.ILSpy
{
var dis = CreateDisassembler(output, options);
PEFile module = types.FirstOrDefault()?.ParentAssembly.PEFile;
dis.AssemblyResolver = module.GetAssemblyResolver();
dis.DisassembleNamespace(nameSpace, module, types.Select(t => (TypeDefinitionHandle)t.MetadataToken));
}
@ -141,6 +147,7 @@ namespace ICSharpCode.ILSpy @@ -141,6 +147,7 @@ namespace ICSharpCode.ILSpy
var module = assembly.GetPEFileOrNull();
var metadata = module.Metadata;
var dis = CreateDisassembler(output, options);
dis.AssemblyResolver = module.GetAssemblyResolver();
if (options.FullDecompilation)
dis.WriteAssemblyReferences(metadata);
if (metadata.IsAssembly)

Loading…
Cancel
Save