本文整理汇总了C#中Evaluator.Run方法的典型用法代码示例。如果您正苦于以下问题:C# Evaluator.Run方法的具体用法?C# Evaluator.Run怎么用?C# Evaluator.Run使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Evaluator
的用法示例。
在下文中一共展示了Evaluator.Run方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Eval
public void Eval(string code, string usings, IEnumerable<Assembly> references)
{
//code = CodeParser.RandomNamespaceGenerate(code);
var sb = new StringBuilder();
const string SystemUsing = "using System;";
sb.Append(SystemUsing);
sb.Append(usings);
var evaluator = new Evaluator(
new CompilerContext(
new CompilerSettings
{
GenerateDebugInfo = true,
Optimize = true,
LoadDefaultReferences = !Host.IsWebApp()
},
new MonoReporter()));
if (references == null)
{
references = AppDomain.CurrentDomain.GetAssemblies()
.Where(
x => x.GetName()
.Name != "mscorlib");
}
references.ToList().ForEach(evaluator.ReferenceAssembly);
evaluator.Compile(sb.ToString());
evaluator.Run(code);
}
示例2: Execute
protected virtual ScriptResult Execute(string code, Evaluator session)
{
try
{
var parser = new SyntaxParser();
var parseResult = parser.Parse(code);
if (parseResult.TypeDeclarations != null && parseResult.TypeDeclarations.Any())
{
foreach (var @class in parseResult.TypeDeclarations)
{
session.Compile(@class);
}
}
if (parseResult.MethodExpressions != null && parseResult.MethodExpressions.Any())
{
foreach (var prototype in parseResult.MethodPrototypes)
{
session.Run(prototype);
}
foreach (var method in parseResult.MethodExpressions)
{
session.Run(method);
}
}
if (!string.IsNullOrWhiteSpace(parseResult.Evaluations))
{
object scriptResult;
bool resultSet;
session.Evaluate(parseResult.Evaluations, out scriptResult, out resultSet);
return new ScriptResult(returnValue: scriptResult);
}
}
catch (Exception ex)
{
return new ScriptResult(executionException: ex);
}
return ScriptResult.Empty;
}