public InvokeSummery Invoke(string boardingNamespace, string boardingClass, string boardingMethod, object instanceObject, params object[] parameters) { if (m_compilerResults.Errors.HasErrors) { return(new InvokeSummery { IsSuccessfull = false }); } var _bordingNamespaceClass = boardingNamespace + "." + boardingClass; var _modules = m_compilerResults?.CompiledAssembly.GetModules(); var _module = _modules.FirstOrDefault(p => p.GetType(_bordingNamespaceClass) != null); var _classType = _module?.GetType(_bordingNamespaceClass); if (_classType == null) { Messages = new ComileAtRuntimeInfo[] { new RuntimeError($"'{_bordingNamespaceClass}' not found in code!", true) }; return(new InvokeSummery { IsSuccessfull = false }); } var _method = _classType.GetMethod(boardingMethod); if (_method == null) { Messages = new ComileAtRuntimeInfo[] { new RuntimeError($"'{boardingMethod}' not found in {_bordingNamespaceClass}!", true) }; return(new InvokeSummery { IsSuccessfull = false }); } var _returnObject = _method.Invoke(instanceObject, parameters); return(new InvokeSummery { IsSuccessfull = true, Result = _returnObject, Parameter = parameters }); }
public bool CompileFromFile(params string[] fileNames) { Messages = new ComileAtRuntimeInfo[0]; m_compilerResults = m_provider?.CompileAssemblyFromFile(m_compilerParameters, fileNames); if (m_compilerResults == null) { Messages = new ComileAtRuntimeInfo[] { new RuntimeError("No compiler result!", true) }; return(false); } Messages = m_compilerResults.Errors.Cast <System.CodeDom.Compiler.CompilerError>() .Select(p => new CompilerError(p) as ComileAtRuntimeInfo) .ToArray(); return(!m_compilerResults.Errors.HasErrors); }