public ActionResult <ExamResult> saveResult(ResultGenerate result)
        {
            try
            {
                var examMrk = _examResutlRepo.GenerateExamResult(result);

                if (examMrk == null)
                {
                    return(NotFound());
                }

                return(Ok(examMrk));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Exemplo n.º 2
0
        public static ResultGenerate GenerateDLL(string path, string assemblyName)
        {
            var scanner                 = path + "/Scanner.cs";
            var parser                  = path + "/Parser.cs";
            var sourceScanner           = File.ReadAllText(scanner);
            var sourceParser            = File.ReadAllText(parser);
            var parsedSyntaxTreeScanner = Parse(sourceScanner, "", CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp7));
            var parsedSyntaxTreeParser  = Parse(sourceParser, "", CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp7));

            using (MemoryStream ms = new MemoryStream())
            {
                var compilation
                    = CSharpCompilation.Create(assemblyName, new SyntaxTree[] { parsedSyntaxTreeScanner, parsedSyntaxTreeParser }, DefaultReferences, DefaultCompilationOptions);
                try
                {
                    var            result         = compilation.Emit(ms);
                    ResultGenerate resultGenerate = new ResultGenerate()
                    {
                        ResultCode = result.Success ? 1 : 0
                    };
                    if (!result.Success)
                    {
                        resultGenerate.ErrorsMessage = new List <string>();
                        foreach (var item in result.Diagnostics)
                        {
                            resultGenerate.ErrorsMessage.Add(item.ToString());
                        }
                    }
                    else
                    {
                        resultGenerate.Result = ms.ToArray();
                    }
                    return(resultGenerate);
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
            }
        }