/////////////////////////////////////////////////////////////////////// /* NOTE: For use by [test2] and CreateSlaveInterpreter ONLY. */ internal static InterpreterHelper Create( AppDomain appDomain, IEnumerable <string> args, CreateFlags createFlags, InitializeFlags initializeFlags, ScriptFlags scriptFlags, InterpreterFlags interpreterFlags, string text, string libraryPath, StringList autoPathList, ref Result result ) { if (appDomain == null) { result = "invalid application domain"; return(null); } if (assemblyName == null) { result = "invalid assembly name"; return(null); } if (typeName == null) { result = "invalid type name"; return(null); } try { object[] ctorArgs = { args, createFlags, initializeFlags, scriptFlags, interpreterFlags, text, libraryPath, autoPathList, result }; InterpreterHelper interpreterHelper = (InterpreterHelper)appDomain.CreateInstanceAndUnwrap( assemblyName.ToString(), typeName, false, MarshalOps.PrivateCreateInstanceBindingFlags, null, ctorArgs, null, null, null); // // NOTE: Grab the result as it may have been modified. // result = ctorArgs[ctorArgs.Length - 1] as Result; return(interpreterHelper); } catch (Exception e) { result = e; } return(null); }
/////////////////////////////////////////////////////////////////////// #region Static "Factory" Methods public static InterpreterHelper Create( AppDomain appDomain, InterpreterSettings interpreterSettings, bool strict, ref Result result ) { if (appDomain == null) { result = "invalid application domain"; return(null); } if (assemblyName == null) { result = "invalid assembly name"; return(null); } if (typeName == null) { result = "invalid type name"; return(null); } try { object[] ctorArgs = { interpreterSettings, strict, result }; InterpreterHelper interpreterHelper = (InterpreterHelper)appDomain.CreateInstanceAndUnwrap( assemblyName.ToString(), typeName, false, MarshalOps.PrivateCreateInstanceBindingFlags, null, ctorArgs, null, null, null); // // NOTE: Grab the result as it may have been modified. // result = ctorArgs[ctorArgs.Length - 1] as Result; return(interpreterHelper); } catch (Exception e) { result = e; } return(null); }