コード例 #1
0
        public TypeReflector(Type type)
        {
            using (var log = new EnterExitLogger(s_log, Level.Info, "type = {0}", type)) {
                m_type          = type;
                m_fields        = new FieldDict();
                m_methods       = new MethodDict();
                m_staticMethods = new MethodDict();

                var fields = m_type.GetFields(MemberReflector.AllDeclared);
                foreach (var fi in fields)
                {
                    m_fields.Add(fi.Name, new FieldReflector(fi));
                }

                var methods = m_type.GetMethods(MemberReflector.PrivateInstanceDeclared);

                foreach (var mi in methods)
                {
                    m_methods.Add(BuildMethodSignature(mi), new MethodReflector(mi));
                }

                methods = m_type.GetMethods(MemberReflector.AllStaticDeclared);

                foreach (var mi in methods)
                {
                    m_staticMethods.Add(BuildMethodSignature(mi), new MethodReflector(mi));
                }
            }
        }
コード例 #2
0
 public bool AddMethod(MethodContext method)
 {
     if (this.MethodDict.Contains(method.ProcDesc))
     {
         return(false);
     }
     MethodDict.Add(method.ProcDesc, method);
     return(true);
 }
コード例 #3
0
        public TKTProcDesc SearchProc(/*SymbolTable table, */ TKTProcDesc procDesc)
        {
            TKTProcDesc proc = MethodDict.SearchProc(procDesc);

            if (proc != null)
            {
                proc.ExMethod = new ExMethodInfo(MethodDict.Get(proc).EmitContext.CurrentMethodBuilder, true);
            }
            else if (parentClass != null)
            {
                proc = parentClass.SearchProc(procDesc);
            }
            else if (BaseGcl != null)
            {
                proc = BaseGcl.SearchProc(procDesc);
            }
            return(proc);
        }