GetParent() private method

private GetParent ( TargetMemoryAccess target ) : MonoClassInfo
target TargetMemoryAccess
return MonoClassInfo
コード例 #1
0
        internal override TargetClassType GetParentType(TargetMemoryAccess target)
        {
            ResolveClass(target, true);

            MonoClassInfo parent = class_info.GetParent(target);

            if (parent == null)
            {
                return(null);
            }

            return(parent.Type);
        }
コード例 #2
0
        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);
        }