Microsoft.JScript.Member.EvaluateAsType C# (CSharp) Method

EvaluateAsType() private method

private EvaluateAsType ( ) : Object
return Object
      internal Object EvaluateAsType(){
        WrappedNamespace ns = this.rootObject.EvaluateAsWrappedNamespace(false);
        Object result = ns.GetMemberValue(this.name);
        if (result != null && !(result is Missing)) return result;
        Object ob = null;
        Member root = this.rootObject as Member;
        if (root == null){
          Lookup lookup = this.rootObject as Lookup;
          if (lookup == null) return null;
          ob = lookup.PartiallyEvaluate();
          ConstantWrapper cw = ob as ConstantWrapper;
          if (cw != null)
            ob = cw.value;
          else{
            JSGlobalField f = lookup.member as JSGlobalField;
            if (f != null && f.IsLiteral)
              ob = f.value;
            else
              return null;
          }
        }else
          ob = root.EvaluateAsType();
        ClassScope csc = ob as ClassScope;
        if (csc != null){
          MemberInfo[] members = csc.GetMember(this.name, BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance);
          if (members.Length == 0) return null;
          JSMemberField field =  members[0] as JSMemberField;
          if (field == null || !field.IsLiteral || !(field.value is ClassScope) || !field.IsPublic && !field.IsAccessibleFrom(this.Engine.ScriptObjectStackTop())) return null;
          return field.value;
        }
        Type t = ob as Type;
        if (t != null) return t.GetNestedType(this.name);
        return null;
      }
      

Usage Example

        internal object EvaluateAsType()
        {
            object memberValue = this.rootObject.EvaluateAsWrappedNamespace(false).GetMemberValue(base.name);

            if ((memberValue != null) && !(memberValue is Microsoft.JScript.Missing))
            {
                return(memberValue);
            }
            object obj3       = null;
            Member rootObject = this.rootObject as Member;

            if (rootObject == null)
            {
                Lookup lookup = this.rootObject as Lookup;
                if (lookup == null)
                {
                    return(null);
                }
                ConstantWrapper wrapper = lookup.PartiallyEvaluate() as ConstantWrapper;
                if (wrapper == null)
                {
                    JSGlobalField member = lookup.member as JSGlobalField;
                    if ((member == null) || !member.IsLiteral)
                    {
                        return(null);
                    }
                    obj3 = member.value;
                }
                else
                {
                    obj3 = wrapper.value;
                }
            }
            else
            {
                obj3 = rootObject.EvaluateAsType();
            }
            ClassScope scope = obj3 as ClassScope;

            if (scope != null)
            {
                MemberInfo[] infoArray = scope.GetMember(base.name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
                if (infoArray.Length != 0)
                {
                    JSMemberField field2 = infoArray[0] as JSMemberField;
                    if (((field2 != null) && field2.IsLiteral) && ((field2.value is ClassScope) && (field2.IsPublic || field2.IsAccessibleFrom(base.Engine.ScriptObjectStackTop()))))
                    {
                        return(field2.value);
                    }
                }
                return(null);
            }
            Type type = obj3 as Type;

            if (type != null)
            {
                return(type.GetNestedType(base.name));
            }
            return(null);
        }
All Usage Examples Of Microsoft.JScript.Member::EvaluateAsType