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;
}
public MethodDef resolveMethod(MemberRef method) {
public MethodDef resolveMethod(IMethod method) {
if (method == 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)
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)
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)
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);
void clearData(string name);
TypeDef resolveType(ITypeDefOrRef type);
MethodDef resolveMethod(MemberRef method);
FieldDef resolveField(MemberRef field);
MethodDef resolveMethod(IMethod method);
FieldDef resolveField(IField field);
}
}