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

View File

@ -34,17 +34,15 @@ namespace de4dot.code.resources {
}
struct ResourceReader {
ModuleDefMD module;
IBinaryReader reader;
ResourceDataCreator resourceDataCreator;
ResourceReader(ModuleDefMD module, IBinaryReader reader) {
this.module = module;
ResourceReader(ModuleDef module, IBinaryReader reader) {
this.reader = reader;
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();
}