예제 #1
0
파일: Repl.cs 프로젝트: paradise/test
        private static void TraceErrorMessage(CompiledCodeSnippet compiledCode)
        {
            Trace.TraceError(compiledCode.Errors[0].ErrorText);

            if (Context.VerboseTrace)
            {
                Trace.TraceError(compiledCode.Errors[0].ErrorNumber);
            }
        }
예제 #2
0
파일: Repl.cs 프로젝트: paradise/test
        private static object InvokeCompiledResult(CompiledCodeSnippet code)
        {
            var results = code.Results;
            Assembly assm = results.CompiledAssembly;
            tempAss.Add(assm);
            //assm.PermissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.NoAccess, "c:\\"));
            Type target = assm.GetType("Wrapper");
            object obj = Activator.CreateInstance(target, null);
            MethodInfo method = target.GetMethod("Eval");
            return method.Invoke(obj, null);
            //var d = AppDomain.CreateDomain("sfgfdgfdg");
            //System.Runtime.InteropServices.RegistrationServices reg = new System.Runtime.InteropServices.RegistrationServices();
            //reg.RegisterAssembly(assm, System.Runtime.InteropServices.AssemblyRegistrationFlags.None);
            //d.SetData("ass", assm);
            //d.AssemblyResolve += new ResolveEventHandler(d_AssemblyResolve);

            //d.DefineDynamicAssembly(assm.GetName(),System.Reflection.Emit.AssemblyBuilderAccess.RunAndCollect);
            //d.Load(assm.FullName);
            ///object obj1= d.CreateInstance(assm.FullName, "Wrapper");
            //object obj1 = d.CreateInstanceAndUnwrap(, "Wrapper");
            //MethodInfo method1 = target.GetMethod("Eval");

            //XDomain domain = new XDomain();
            //domain.BuildCode("2+2");
            //return domain.Run("2+2");
            //return "";
            //return method1.Invoke(obj, null);

            //CrossAppDomainDelegate del = new CrossAppDomainDelegate(delegate() { method.Invoke(obj,null); });
            //d.DoCallBack(del);
            //return 1;
        }