diff options
author | Marius Ungureanu <marius.ungureanu@xamarin.com> | 2017-05-15 15:44:15 +0300 |
---|---|---|
committer | Marius Ungureanu <marius.ungureanu@xamarin.com> | 2017-05-15 15:44:15 +0300 |
commit | 32d7c2ae3ae6edd2e2d6fe3987941626dff63008 (patch) | |
tree | c64e2437ff18336fc4c2018a61a627c296fca173 /Mono.Addins.CecilReflector | |
parent | 627625e8e842d521b8bf570c757214e3fc85f60b (diff) |
[Reflector] Fix InvalidCastException in reflector.
Also moved to a dictionary for type safety.
Diffstat (limited to 'Mono.Addins.CecilReflector')
-rw-r--r-- | Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs b/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs index 2734da9..588bb11 100644 --- a/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs +++ b/Mono.Addins.CecilReflector/Mono.Addins.CecilReflector/Reflector.cs @@ -27,6 +27,7 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Reflection; using Mono.Addins; using Mono.Addins.Database; @@ -40,9 +41,9 @@ namespace Mono.Addins.CecilReflector public class Reflector: IAssemblyReflector, IDisposable { IAssemblyLocator locator; - Hashtable cachedAssemblies = new Hashtable (); + Dictionary<string, AssemblyDefinition> cachedAssemblies = new Dictionary<string, AssemblyDefinition> (); DefaultAssemblyResolver defaultAssemblyResolver; - + public void Initialize (IAssemblyLocator locator) { this.locator = locator; @@ -299,8 +300,8 @@ namespace Mono.Addins.CecilReflector public AssemblyDefinition LoadAssembly (string file, bool cache) { - AssemblyDefinition adef = (AssemblyDefinition) cachedAssemblies [file]; - if (adef != null) + AssemblyDefinition adef; + if (cachedAssemblies.TryGetValue (file, out adef)) return adef; var rp = new ReaderParameters (ReadingMode.Deferred); rp.AssemblyResolver = defaultAssemblyResolver; @@ -500,7 +501,7 @@ namespace Mono.Addins.CecilReflector public void Dispose () { - foreach (AssemblyDefinition asm in cachedAssemblies) { + foreach (AssemblyDefinition asm in cachedAssemblies.Values) { asm.Dispose (); } } |