From c73f46d27c7c496052c7cc3ff8a7d642372c34b2 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer <siegfriedpammer@gmail.com> Date: Sat, 24 Nov 2018 16:35:20 +0100 Subject: [PATCH] Refactor code in HandleCommandLineArgumentsAfterShowList as per code-review. --- ILSpy/MainWindow.xaml.cs | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index 48a25ddb8..d5cbbddbd 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -300,24 +300,16 @@ namespace ICSharpCode.ILSpy var module = asm.GetPEFileOrNull(); if (CanResolveTypeInPEFile(module, typeRef, out var typeHandle)) { IEntity mr = null; - if (typeHandle.Kind == HandleKind.ExportedType) { - var decompilerTypeSystem = new DecompilerTypeSystem(module, module.GetAssemblyResolver()); - if (memberRef == null) { - mr = typeRef.Resolve(new SimpleTypeResolveContext(decompilerTypeSystem)) as ITypeDefinition; - } else { - mr = memberRef.Resolve(new SimpleTypeResolveContext(decompilerTypeSystem)); - } - } else { - var compilation = new SimpleCompilation(module, MinimalCorlib.Instance); - if (memberRef == null) { - mr = ((MetadataModule)compilation.MainModule).GetDefinition((TypeDefinitionHandle)typeHandle); - } else { - mr = memberRef.Resolve(new SimpleTypeResolveContext(compilation)); - } - } - + ICompilation compilation = typeHandle.Kind == HandleKind.ExportedType + ? new DecompilerTypeSystem(module, module.GetAssemblyResolver()) + : new SimpleCompilation(module, MinimalCorlib.Instance); + mr = memberRef == null + ? typeRef.Resolve(new SimpleTypeResolveContext(compilation)) as ITypeDefinition + : (IEntity)memberRef.Resolve(new SimpleTypeResolveContext(compilation)); if (mr != null && mr.ParentModule.PEFile != null) { found = true; + // Defer JumpToReference call to allow an assembly that was loaded while + // resolving a type-forwarder in FindMemberByKey to appear in the assembly list. Dispatcher.BeginInvoke(new Action(() => JumpToReference(mr)), DispatcherPriority.Loaded); break; }