Microsoft.JScript.GlobalScope.GetMembers C# (CSharp) 메소드

GetMembers() 공개 메소드

public GetMembers ( BindingFlags bindingAttr ) : System.Reflection.MemberInfo[]
bindingAttr BindingFlags
리턴 System.Reflection.MemberInfo[]
      public override MemberInfo[] GetMembers(BindingFlags bindingAttr){
        if (this.recursive)
          return new MemberInfo[0];
        MemberInfoList result = new MemberInfoList();
        if (this.isComponentScope){
          MemberInfo[] mems = Globals.TypeRefs.ToReferenceContext(this.GetType()).GetMembers(bindingAttr | BindingFlags.DeclaredOnly);
          if (mems != null)
            foreach (MemberInfo mem in mems)
              result.Add(mem);
        }else{
          if (this.componentScopes != null){
            for (int i = 0, n = this.componentScopes.Count; i < n; i++){
              GlobalScope sc = (GlobalScope)this.componentScopes[i];
              this.recursive = true;
              MemberInfo[] mems = null;
              try{
                mems = sc.GetMembers(bindingAttr);
              }finally{
                this.recursive = false;
              }
              if (mems != null)
                foreach (MemberInfo mem in mems)
                  result.Add(mem);
            }
          }
          IEnumerator enu = this.field_table.GetEnumerator();
          while (enu.MoveNext()){
            FieldInfo field = (FieldInfo)enu.Current;
            result.Add(field);
          }
        }
        if (this.parent != null && (this.isComponentScope || ((bindingAttr & BindingFlags.DeclaredOnly) == 0)) ){
          this.recursive = true;
          MemberInfo[] mems = null;
          try{
            mems = ((ScriptObject)this.parent).GetMembers(bindingAttr);
          }finally{
            this.recursive = false;
          }
          if (mems != null)
            foreach (MemberInfo mem in mems)
              result.Add(mem);
        }
        return result.ToArray();
      }

Usage Example

예제 #1
0
        public override MemberInfo[] GetMembers(BindingFlags bindingAttr)
        {
            if (this.recursive)
            {
                return(new MemberInfo[0]);
            }
            MemberInfoList result = new MemberInfoList();

            if (this.isComponentScope)
            {
                MemberInfo[] mems = Globals.TypeRefs.ToReferenceContext(this.GetType()).GetMembers(bindingAttr | BindingFlags.DeclaredOnly);
                if (mems != null)
                {
                    foreach (MemberInfo mem in mems)
                    {
                        result.Add(mem);
                    }
                }
            }
            else
            {
                if (this.componentScopes != null)
                {
                    for (int i = 0, n = this.componentScopes.Count; i < n; i++)
                    {
                        GlobalScope sc = (GlobalScope)this.componentScopes[i];
                        this.recursive = true;
                        MemberInfo[] mems = null;
                        try
                        {
                            mems = sc.GetMembers(bindingAttr);
                        }
                        finally
                        {
                            this.recursive = false;
                        }
                        if (mems != null)
                        {
                            foreach (MemberInfo mem in mems)
                            {
                                result.Add(mem);
                            }
                        }
                    }
                }
                IEnumerator enu = this.field_table.GetEnumerator();
                while (enu.MoveNext())
                {
                    FieldInfo field = (FieldInfo)enu.Current;
                    result.Add(field);
                }
            }
            if (this.parent != null && (this.isComponentScope || ((bindingAttr & BindingFlags.DeclaredOnly) == 0)))
            {
                this.recursive = true;
                MemberInfo[] mems = null;
                try
                {
                    mems = ((ScriptObject)this.parent).GetMembers(bindingAttr);
                }
                finally
                {
                    this.recursive = false;
                }
                if (mems != null)
                {
                    foreach (MemberInfo mem in mems)
                    {
                        result.Add(mem);
                    }
                }
            }
            return(result.ToArray());
        }
All Usage Examples Of Microsoft.JScript.GlobalScope::GetMembers