internal override TargetClassType GetParentType(TargetMemoryAccess target) { ResolveClass(target, true); MonoClassInfo parent = class_info.GetParent(target); if (parent == null) { return(null); } return(parent.Type); }
public MonoClassInfo ResolveClass(TargetMemoryAccess target, bool fail) { if (resolved) { return(class_info); } if (class_info == null) { int token = type.MetadataToken.ToInt32(); class_info = file.LookupClassInfo(target, token); } if (class_info == null) { if (!fail) { return(null); } throw new TargetException(TargetError.ClassNotInitialized, "Class `{0}' not initialized yet.", Name); } if (class_info.HasParent) { MonoClassInfo parent_info = class_info.GetParent(target); parent_type = (IMonoStructType)parent_info.Type; parent_type.ClassInfo = parent_info; if (parent_type.ResolveClass(target, fail) == null) { return(null); } } resolved = true; return(class_info); }