Update resolve{Method,Field}() sigs with a more general arg type

This commit is contained in:
de4dot 2012-11-07 04:46:19 +01:00
parent 814c3d3944
commit cc1e36389d
2 changed files with 24 additions and 8 deletions

View File

@ -72,26 +72,42 @@ namespace de4dot.code {
return null; return null;
} }
public MethodDef resolveMethod(MemberRef method) { public MethodDef resolveMethod(IMethod method) {
if (method == null) if (method == null)
return null; return null;
var type = resolveType(method.DeclaringType); var md = method as MethodDef;
if (md != null)
return md;
var mr = method as MemberRef;
if (mr == null || !mr.IsMethodRef)
return null;
var type = resolveType(mr.DeclaringType);
if (type == null) if (type == null)
return null; return null;
return type.Resolve(method) as MethodDef; return type.Resolve(mr) as MethodDef;
} }
public FieldDef resolveField(MemberRef field) { public FieldDef resolveField(IField field) {
if (field == null) if (field == null)
return null; return null;
var type = resolveType(field.DeclaringType); var fd = field as FieldDef;
if (fd != null)
return fd;
var mr = field as MemberRef;
if (mr == null || !mr.IsFieldRef)
return null;
var type = resolveType(mr.DeclaringType);
if (type == null) if (type == null)
return null; return null;
return type.Resolve(field) as FieldDef; return type.Resolve(mr) as FieldDef;
} }
} }
} }

View File

@ -26,7 +26,7 @@ namespace de4dot.code {
object getData(string name); object getData(string name);
void clearData(string name); void clearData(string name);
TypeDef resolveType(ITypeDefOrRef type); TypeDef resolveType(ITypeDefOrRef type);
MethodDef resolveMethod(MemberRef method); MethodDef resolveMethod(IMethod method);
FieldDef resolveField(MemberRef field); FieldDef resolveField(IField field);
} }
} }