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); }
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); }