ResourceReader.Read() now takes a ModuleDef instead of a ModuleDefMD as 1st param

This commit is contained in:
de4dot 2013-11-17 20:23:32 +01:00
parent 8b4b48cb08
commit 8521f7baac
2 changed files with 13 additions and 11 deletions

View File

@ -26,12 +26,14 @@ using dnlib.DotNet;
namespace de4dot.code.resources { namespace de4dot.code.resources {
class ResourceDataCreator { class ResourceDataCreator {
ModuleDefMD module; readonly ModuleDef module;
Dictionary<string, UserResourceType> dict = new Dictionary<string, UserResourceType>(StringComparer.Ordinal); readonly ModuleDefMD moduleMD;
Dictionary<string, string> asmNameToAsmFullName = new Dictionary<string, string>(StringComparer.Ordinal); readonly Dictionary<string, UserResourceType> dict = new Dictionary<string, UserResourceType>(StringComparer.Ordinal);
readonly Dictionary<string, string> asmNameToAsmFullName = new Dictionary<string, string>(StringComparer.Ordinal);
public ResourceDataCreator(ModuleDefMD module) { public ResourceDataCreator(ModuleDef module) {
this.module = module; this.module = module;
this.moduleMD = module as ModuleDefMD;
} }
public int Count { public int Count {
@ -210,9 +212,11 @@ namespace de4dot.code.resources {
string TryGetRealAssemblyName(string assemblyName) { string TryGetRealAssemblyName(string assemblyName) {
var simpleName = Utils.GetAssemblySimpleName(assemblyName); var simpleName = Utils.GetAssemblySimpleName(assemblyName);
var asmRef = module.GetAssemblyRef(simpleName); if (moduleMD != null) {
if (asmRef != null) var asmRef = moduleMD.GetAssemblyRef(simpleName);
return asmRef.FullName; if (asmRef != null)
return asmRef.FullName;
}
var asm = TheAssemblyResolver.Instance.Resolve(new AssemblyNameInfo(simpleName), module); var asm = TheAssemblyResolver.Instance.Resolve(new AssemblyNameInfo(simpleName), module);
return asm == null ? null : asm.FullName; return asm == null ? null : asm.FullName;

View File

@ -34,17 +34,15 @@ namespace de4dot.code.resources {
} }
struct ResourceReader { struct ResourceReader {
ModuleDefMD module;
IBinaryReader reader; IBinaryReader reader;
ResourceDataCreator resourceDataCreator; ResourceDataCreator resourceDataCreator;
ResourceReader(ModuleDefMD module, IBinaryReader reader) { ResourceReader(ModuleDef module, IBinaryReader reader) {
this.module = module;
this.reader = reader; this.reader = reader;
this.resourceDataCreator = new ResourceDataCreator(module); this.resourceDataCreator = new ResourceDataCreator(module);
} }
public static ResourceElementSet Read(ModuleDefMD module, IBinaryReader reader) { public static ResourceElementSet Read(ModuleDef module, IBinaryReader reader) {
return new ResourceReader(module, reader).Read(); return new ResourceReader(module, reader).Read();
} }