Microsoft.JScript.MemberInfoList.ToArray C# (CSharp) Method

ToArray() private method

private ToArray ( ) : System.Reflection.MemberInfo[]
return System.Reflection.MemberInfo[]
      internal MemberInfo[] ToArray(){
        int n = this.count;
        MemberInfo[] result = new MemberInfo[n];
        MemberInfo[] list = this.list;
        for (int i = 0; i < n; i++) result[i] = list[i];
        return result;
      }
    }

Usage Example

Example #1
0
        public override MemberInfo[] GetMembers(BindingFlags bindingAttr)
        {
            MemberInfoList  mems       = new MemberInfoList();
            SimpleHashtable uniqueMems = new SimpleHashtable(32);

            if (!this.noExpando && this.field_table != null) //Add any expando properties
            {
                IEnumerator enu = this.field_table.GetEnumerator();
                while (enu.MoveNext())
                {
                    FieldInfo field = (FieldInfo)enu.Current;
                    mems.Add(field);
                    uniqueMems[field.Name] = field;
                }
            }

            //Add the public members of the built-in objects if they don't already exist
            if (this.isASubClass)
            {
                MemberInfo[] ilMembers = this.GetType().GetMembers(bindingAttr & ~BindingFlags.NonPublic); //Never expose non public members of old style objects
                for (int i = 0, n = ilMembers.Length; i < n; i++)
                {
                    MemberInfo ilMem = ilMembers[i];

                    //Hide any infrastructure stuff in JSObject
                    if (!ilMem.DeclaringType.IsAssignableFrom(Typeob.JSObject) && uniqueMems[ilMem.Name] == null)
                    {
                        MethodInfo method = ilMem as MethodInfo;
                        if (method == null || !method.IsSpecialName)
                        {
                            mems.Add(ilMem);
                            uniqueMems[ilMem.Name] = ilMem;
                        }
                    }
                }
            }

            //Add parent members if they don't already exist
            if (this.parent != null)
            {
                SimpleHashtable cache = this.parent.wrappedMemberCache;
                if (cache == null)
                {
                    cache = this.parent.wrappedMemberCache = new SimpleHashtable(8);
                }
                MemberInfo[] parentMems = ScriptObject.WrapMembers(((IReflect)this.parent).GetMembers(bindingAttr & ~BindingFlags.NonPublic), this.parent, cache);
                for (int i = 0, n = parentMems.Length; i < n; i++)
                {
                    MemberInfo parentMem = parentMems[i];
                    if (uniqueMems[parentMem.Name] == null)
                    {
                        mems.Add(parentMem);
                        //uniqueMems[parentMem.Name] = parentMem; //No need to add to lookup table - no one else will be looking.
                    }
                }
            }

            return(mems.ToArray());
        }
All Usage Examples Of Microsoft.JScript.MemberInfoList::ToArray