Exemplo n.º 1
0
        public static MethodInterpreter GetInterpreter(this MethodBase methodBase, CrRuntimeLibrary crRuntime)
        {
            var closure = crRuntime.Closure;

            if (closure != null)
            {
                var key = methodBase.ToKey(closure);
                if (key != null)
                {
                    return(key.Interpreter);
                }
            }
            var declaringType = methodBase.DeclaringType;
            var typeToSearch  = declaringType.ReversedType(crRuntime);
            var isGacType     = typeToSearch.Assembly.GlobalAssemblyCache;

            if (isGacType)
            {
                var interpreter = new MethodInterpreter(methodBase);
                if (crRuntime.ResolveInterpreter(interpreter.ToKey(), ref interpreter))
                {
                    return(interpreter);
                }

                return(null);
            }
            return(methodBase.Register());
        }
Exemplo n.º 2
0
        public static MethodInterpreter Register(this MethodBase method, CrRuntimeLibrary crRuntime = null)
        {
            SetupTypeResolverIfNecesary(method);
            var interpreter = new MethodInterpreter(method);

            Register(interpreter);

            if (Resolve(interpreter))
            {
                return(interpreter);
            }
            if (crRuntime != null)
            {
                var methodKind = crRuntime.ResolveInterpreter(interpreter.ToKey(), ref interpreter);
                //interpreter.Kind = methodKind;
            }
            return(interpreter);
        }